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:
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 = rollNDiceCả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 5Tên chức năng từ câu lệnh def. def statement.
rollDice = rollNDice 6Tên của mô -đun trong đó tên hàm được xác định.
rollDice = rollNDice 7Tuple 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 9Từ đ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" 2Từ đ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"