Hướng dẫn what does function object mean in python? - đối tượng hàm có nghĩa là gì trong python?

Một trong những tính năng mạnh mẽ nhất của Python là mọi thứ đều là một đối tượng, bao gồm cả các chức năng. Các chức năng trong Python là các đối tượng hạng nhất.first-class objects.

Điều này có nghĩa là, các chức năng trong Python:

  • có loại
  • có thể được gửi dưới dạng đối số đến một hàm khác
  • có thể được sử dụng trong biểu thức
  • có thể trở thành một phần của nhiều dữ liệu khác nhau

Một hậu quả thú vị của thế giới quan Python là một chức năng là một đối tượng của lớp function, một lớp con của callable. Tính năng phổ biến mà tất cả các callable chia sẻ là chúng có giao diện rất đơn giản: chúng có thể được gọi. Các callable khác bao gồm các chức năng tích hợp, các chức năng của máy phát (có câu lệnh năng suất thay vì câu lệnh trả về) và những thứ được gọi là Lambdas. yield statement instead of the return statement) and things called lambdas.

Đôi khi chúng ta không muốn gọi và đánh giá một chức năng. Đôi khi chúng tôi muốn làm những việc khác để hoặc với một chức năng. Ví dụ: các chức năng nhà máy khác nhau (int, ____10,

def rollNDice( n=2 ):
    t= 0
    for d in range(n):
        t += random.randrange( 1, 7 )
    return t
1,
def rollNDice( n=2 ):
    t= 0
    for d in range(n):
        t += random.randrange( 1, 7 )
    return t
2) có thể được sử dụng với hàm
def rollNDice( n=2 ):
    t= 0
    for d in range(n):
        t += random.randrange( 1, 7 )
    return t
3 thay vì được gọi để tạo một đối tượng mới.

Ví dụ,

def rollNDice( n=2 ):
    t= 0
    for d in range(n):
        t += random.randrange( 1, 7 )
    return t
4 có giá trị
def rollNDice( n=2 ):
    t= 0
    for d in range(n):
        t += random.randrange( 1, 7 )
    return t
5. Nó sử dụng hàm int, nhưng không áp dụng chức năng int.

Một đối tượng chức năng được tạo với câu lệnh def. Chủ yếu, chúng tôi muốn đánh giá các đối tượng chức năng chúng tôi tạo. Tuy nhiên, vì một hàm là một đối tượng, nó có các thuộc tính và nó có thể được thao tác ở một mức độ hạn chế. def statement. Primarily, we want to evaluate the function objects we create. However, because a function is an object, it has attributes, and it can be manipulated to a limited extent.

Từ quan điểm cú pháp, một tên theo sau là ____ 18 là một cuộc gọi chức năng. Bạn có thể nghĩ về ____ 18 là toán tử "cuộc gọi": họ yêu cầu đánh giá các đối số, sau đó chúng áp dụng chức năng.

def rollDie():
    return rollNDice( 1 )
def rollDice():
    return rollNDice()
0 (
def rollDie():
    return rollNDice( 1 )
def rollDice():
    return rollNDice()
1)

Khi chúng ta sử dụng tên hàm không có ____ 18, chúng ta đang nói về đối tượng function. Có một số thao tác mà bạn có thể muốn làm với một đối tượng chức năng.

Gọi hàm. & Nbsp; cho đến nay, cách sử dụng phổ biến nhất cho một đối tượng hàm là gọi nó. Khi chúng tôi theo tên hàm với ____ 18, chúng tôi đang gọi hàm: đánh giá các đối số và áp dụng chức năng. Gọi chức năng là thao tác phổ biến nhất.By far, the most common use for a function object is to call it. When we follow a function name with

def rollNDice( n=2 ):
    t= 0
    for d in range(n):
        t += random.randrange( 1, 7 )
    return t
8's, we are calling the function: evaluating the arguments, and applying the function. Calling the function is the most common manipulation.

Bí danh chức năng. & Nbsp; Điều này là nguy hiểm, bởi vì nó có thể tạo ra một chương trình tối nghĩa. Tuy nhiên, nó cũng có thể đơn giản hóa việc phát triển và tăng cường phần mềm. Hãy tưởng tượng rằng phiên bản đầu tiên của chương trình của chúng tôi có hai chức năng có tên

def rollDie():
    return rollNDice( 1 )
def rollDice():
    return rollNDice()
5 và
def rollDie():
    return rollNDice( 1 )
def rollDice():
    return rollNDice()
6. Các định nghĩa có thể trông giống như sau đây.
This is dangerous, because it can make a program obscure. However, it can also simplify the evoluation and enhancement of software. Imagine that the first version of our program had two functions named
def rollDie():
    return rollNDice( 1 )
def rollDice():
    return rollNDice()
5 and
def rollDie():
    return rollNDice( 1 )
def rollDice():
    return rollNDice()
6. The definitions might look like the following.

def rollDie():
    return random.randrange(1,7)
def rollDice():
    return random.randrange(1,7) + random.randrange(1,7)

Khi chúng tôi muốn mở rộng chương trình của mình để xử lý các trò chơi năm kiểu, chúng tôi nhận ra rằng chúng tôi có thể khái quát chức năng này.

def rollNDice( n=2 ):
    t= 0
    for d in range(n):
        t += random.randrange( 1, 7 )
    return t

Điều quan trọng là phải loại bỏ thuật toán trùng lặp trong cả ba phiên bản của chức năng lăn xúc xắc của chúng tôi. Vì

def rollDie():
    return rollNDice( 1 )
def rollDice():
    return rollNDice()
5 và
def rollDie():
    return rollNDice( 1 )
def rollDice():
    return rollNDice()
6 chỉ là những trường hợp đặc biệt của
def rollDie():
    return rollNDice( 1 )
def rollDice():
    return rollNDice()
9, chúng ta nên thay thế chúng bằng một cái gì đó như sau.

def rollDie():
    return rollNDice( 1 )
def rollDice():
    return rollNDice()

Định nghĩa sửa đổi này của

def rollDie():
    return rollNDice( 1 )
def rollDice():
    return rollNDice()
6 thực sự chỉ là một tên khác cho
rollDice = rollNDice
1. Vì một hàm là một đối tượng được gán cho một biến, chúng ta có thể có nhiều biến được gán cho hàm. Đây là cách chúng ta tạo ra một bí danh cho một hàm.

rollDice = rollNDice

Cảnh báo

Định nghĩa bí danh chức năng giúp duy trì khả năng tương thích giữa các bản phát hành phần mềm cũ và mới. Nó không phải là một cái gì đó nên được thực hiện như một thực hành chung; Chúng ta cần cẩn thận cung cấp nhiều tên cho một chức năng nhất định. Đây có thể là một đơn giản hóa. Nó cũng có thể là một cải tiến hiệu suất lớn cho một số loại chức năng được sử dụng sâu trong các vòng lặp lồng nhau.

Các thuộc tính chức năng. & NBSP; một đối tượng hàm có một số thuộc tính. Chúng ta có thể thẩm vấn các thuộc tính đó và ở một phần mở rộng hạn chế, chúng ta có thể thay đổi một số thuộc tính này. Để biết thêm thông tin, xem Phần 3.2 của tham chiếu ngôn ngữ Python và phần 2.3.9.3 của tham chiếu thư viện Python.A function object has a number of attributes. We can interrogate those attributes, and to a limited extend, we can change some of these attributes. For more information, see section 3.2 of the Python Language Reference and section 2.3.9.3 of the Python Library Reference.

rollDice = rollNDice
2,
rollDice = rollNDice
3
rollDice = rollNDice
3

DocString từ dòng đầu tiên của cơ thể chức năng.

rollDice = rollNDice
4,
rollDice = rollNDice
5
rollDice = rollNDice
5

Tên chức năng từ câu lệnh def. def statement.

rollDice = rollNDice
6

Tên của mô -đun trong đó tên hàm được xác định.

rollDice = rollNDice
7

Tuple với các giá trị mặc định được gán cho mỗi đối số có giá trị mặc định. Đây là một tập hợp con của các tham số, bắt đầu với tham số đầu tiên có giá trị mặc định.

rollDice = rollNDice
8

Đối tượng mã thực tế là bộ câu lệnh trong phần thân của chức năng này.

rollDice = rollNDice
9

Từ điển xác định không gian tên toàn cầu cho mô -đun xác định hàm này. Đây là

def rollDie():
    return random.randrange(1,7)
rollDie.version= "1.0"
rollDie.authoor= "sfl"
0 của mô -đun xác định hàm này.

def rollDie():
    return random.randrange(1,7)
rollDie.version= "1.0"
rollDie.authoor= "sfl"
1,
def rollDie():
    return random.randrange(1,7)
rollDie.version= "1.0"
rollDie.authoor= "sfl"
2
def rollDie():
    return random.randrange(1,7)
rollDie.version= "1.0"
rollDie.authoor= "sfl"
2

Từ điển xác định không gian tên cục bộ cho các thuộc tính của hàm này.

Bạn cũng có thể đặt và nhận các thuộc tính chức năng của riêng bạn.

def rollDie():
    return random.randrange(1,7)
rollDie.version= "1.0"
rollDie.authoor= "sfl"

Chức năng của một đối tượng có nghĩa là gì?

Một đối tượng hàm, hoặc functor (hai thuật ngữ đồng nghĩa) chỉ đơn giản là bất kỳ đối tượng nào có thể được gọi như thể nó là một hàm. Một hàm thông thường là một đối tượng hàm, và một con trỏ hàm cũng vậy; Tổng quát hơn, một đối tượng của một lớp xác định toán tử ().any object that can be called as if it is a function. An ordinary function is a function object, and so is a function pointer; more generally, so is an object of a class that defines operator().

Làm thế nào để bạn gọi một đối tượng hàm trong Python?

Khi một hàm được tạo trong Python, chúng ta có thể gọi nó bằng cách viết function_name () chính hoặc hàm khác/ hàm lồng nhau. Sau đây là cú pháp để gọi một hàm. Cú pháp: DEF function_name ():by writing function_name() itself or another function/ nested function. Following is the syntax for calling a function. Syntax: def function_name():

Làm thế nào để một đối tượng chức năng hoạt động?

Trong lập trình máy tính, một đối tượng hàm là một cấu trúc cho phép một đối tượng được gọi hoặc gọi như thể nó là một hàm thông thường, thường có cùng một cú pháp (một tham số hàm cũng có thể là một hàm).Các đối tượng chức năng thường được gọi là functor.a construct allowing an object to be invoked or called as if it were an ordinary function, usually with the same syntax (a function parameter that can also be a function). Function objects are often called functors.

Làm thế nào để bạn đọc một đối tượng chức năng trong Python?

Nếu bạn muốn nhìn vào bên trong một đối tượng trực tiếp, thì mô -đun kiểm tra của Python là một câu trả lời tốt.Nói chung, nó hoạt động để lấy mã nguồn của các hàm được xác định trong một tệp nguồn ở đâu đó trên đĩa ...
type().
getattr().
hasattr().
globals().
locals().
callable().