Trong Python, hàm là đối tượng "hạng nhất". chúng có thể được gán tên biến cho chúng, chúng có thể được truyền dưới dạng đối số cho các hàm khác và thậm chí có thể được trả về từ các hàm khác. Một hàm được đặt tên khi nó được định nghĩa, nhưng tên đó có thể được gán lại để chỉ một đối tượng khác nếu muốn [đừng làm điều này trừ khi bạn muốn. ]
Như ví dụ sau minh họa, có thể gán nhiều hơn một tên biến cho cùng một đối tượng hàm
>>> def cosec[x]:
.. """Return the cosecant of x, cosec[x] = 1/sin[x]."""
.. return 1./math.sin[x]
...
>>> cosec
>>> cosec[math.pi/4]
1.4142135623730951
>>> csc = cosec
>>> csc
>>> csc[math.pi/4]
1.4142135623730951
Phép gán csc = cosec
liên kết mã định danh [tên biến] csc
với cùng một đối tượng hàm với mã định danh cosec
. chức năng này sau đó có thể được gọi với csc[]
cũng như với cosec[]
Đảm bảo không gọi hàm bằng cách sử dụng dấu ngoặc đơn trong phép gán nếu bạn định gọi hàm sau này
Chúng tôi đã gán hàm multiply
cho một biến có tên là func
Biến func
lưu trữ một tham chiếu [con trỏ] đến hàm multiply
, vì vậy chúng ta có thể gọi nó giống như cách chúng ta gọi trực tiếp hàm multiply
- sử dụng dấu ngoặc đơn
Nếu bạn sử dụng dấu ngoặc đơn trong phép gán, bạn sẽ gán kết quả của việc gọi hàm cho biến
Chúng tôi đã sử dụng dấu ngoặc đơn, vì vậy chúng tôi đã gán kết quả của việc gọi hàm multiply
cho biến thay vì gán tham chiếu cho hàm
Lưu ý rằng bạn phải sử dụng rõ ràng câu lệnh
def double[number]:
return number * 2
print[double[5]]
a = "abc"
print[a]
a = double
print[a[17]]
b = a
print[b[12]]
4 trong hàm để trả về giá trịTất cả các hàm không trả về giá trị hoàn toàn trả về
def double[number]:
return number * 2
print[double[5]]
a = "abc"
print[a]
a = double
print[a[17]]
b = a
print[b[12]]
5Các tham số mà hàm nhận [nếu có] phải được truyền dưới dạng đối số giữa các dấu ngoặc đơn
Điều mà bạn có thể thường phải làm là lưu trữ một tham chiếu đến hàm trong một biến bằng cách cung cấp trước một số đối số
Chúng tôi đã sử dụng phương thức này để lấy một đối tượng có thể gọi mới với
def double[number]:
return number * 2
print[double[5]]
a = "abc"
print[a]
a = double
print[a[17]]
b = a
print[b[12]]
6 được truyền làm đối số vị trí đầu tiên của nóBây giờ, bất cứ khi nào biến
def double[number]:
return number * 2
print[double[5]]
a = "abc"
print[a]
a = double
print[a[17]]
b = a
print[b[12]]
7 được gọi, hàm func
0 sẽ được gọi với def double[number]:
return number * 2
print[double[5]]
a = "abc"
print[a]
a = double
print[a[17]]
b = a
print[b[12]]
6 làm đối số vị trí đầu tiên của nóĐây là lý do tại sao chúng ta chỉ có thể gọi hàm với một đối số duy nhất, mặc dù phải mất 2
Điều này hữu ích khi bạn muốn lấy một đối tượng có thể gọi được với một số hoặc tất cả các đối số của hàm được chỉ định trước
Dưới đây là một ví dụ về việc gán một hàm không nhận bất kỳ đối số nào cho một biến
Hàm func
2 không sử dụng câu lệnh
def double[number]:
return number * 2
print[double[5]]
a = "abc"
print[a]
a = double
print[a[17]]
b = a
print[b[12]]
4 để trả về một giá trị, do đó, nó chỉ in thông báo đã chỉ định và trả về ngầm định def double[number]:
return number * 2
print[double[5]]
a = "abc"
print[a]
a = double
print[a[17]]
b = a
print[b[12]]
5Đảm bảo rằng bạn không cố gán kết quả của việc gọi một hàm không trả về giá trị cho một biến
Chúng tôi đã chỉ định kết quả của việc gọi một hàm trả về
def double[number]:
return number * 2
print[double[5]]
a = "abc"
print[a]
a = double
print[a[17]]
b = a
print[b[12]]
5 cho một biếnĐảm bảo sử dụng rõ ràng câu lệnh
def double[number]:
return number * 2
print[double[5]]
a = "abc"
print[a]
a = double
print[a[17]]
b = a
print[b[12]]
4 nếu bạn muốn trả về một giá trị từ hàmSự khác biệt giữa việc lưu trữ một tham chiếu [con trỏ] đến một hàm trong một biến và đầu ra của việc gọi hàm là sử dụng dấu ngoặc đơn
Khi bạn sử dụng dấu ngoặc đơn, bạn gọi hàm và lưu trữ đầu ra thực tế, không phải là tham chiếu có thể được gọi sau này
Đây là một bài viết khác trong loạt Hàm trong Python. Hôm nay chúng ta sẽ nói về việc gán các chức năng cho các biến. Nếu bạn chưa đọc các phần trước, vui lòng làm như vậy. Họ đây rồi
1] Giới thiệu về Chức năng
2] Các hàm có tham số
3] Tuyên bố hoàn trả
4] Thông số bắt buộc
5] Thông số tùy chọn
6] Tham số tùy chọn có thể thay đổi
7] Đối số từ khóa
8] Số lượng tham số vị trí tùy ý
9] Số lượng tham số từ khóa tùy ý
10] Số lượng tùy ý của cả tham số vị trí và từ khóa
11] Hàm lồng nhau
12] Gọi hàm trong các hàm khác
Hàm là đối tượng hạng nhất, có nghĩa là chúng là đối tượng giống như bất kỳ đối tượng nào khác, điều đó có nghĩa là chúng có thể được sử dụng giống như các đối tượng khác. Dịch điều này sang tiếng Anh đơn giản, chúng ta có thể gán các hàm cho các biến và chuyển chúng làm đối số cho các hàm khác. Chúng cũng có thể được trả về từ các chức năng khác. Nếu bạn muốn đọc thêm về các hàm với tư cách là đối tượng hạng nhất, tôi có một bài viết về điều đó
Tìm hiểu cách tạo các ứng dụng GUI đẹp mắt
bằng Python sử dụng khung Kivy
Toàn diện, dành cho người mới bắt đầu Kivy, dễ làm theo
Tải sách tại đây [PDF] hoặc trên Amazon.
sách điện tử / bìa mềm [đen trắng] / paperback [full color]
Bây giờ hãy tập trung vào việc gán chức năng cho các biến. Nếu bạn gán một hàm cho một biến, bạn có thể sử dụng biến đó làm hàm
def double[number]:
return number * 2
print[double[5]]
a = "abc"
print[a]
a = double
print[a[17]]
b = a
print[b[12]]
Đây là đầu ra
10
abc
34
24
Vì vậy, trong đoạn mã trên, biến a lần đầu tiên được gán một chuỗi. Sau đó, nó được gán chức năng kép. Từ thời điểm này, có thể sử dụng a làm chức năng kép. Cuối cùng, biến b đã được gán cùng một tham chiếu với a, vì vậy bây giờ nó cũng trỏ đến hàm kép. Cuối cùng, chúng ta có thể sử dụng double, a hoặc b và tất cả chúng đều tham chiếu đến cùng một chức năng