Các hàm Python trật tự cao hơn (tiếp tục)
Hàm như các objects dữ liệu first-class
Trong Python, các hàm có thể được đối xử như các objects dữ liệu first-class. Cái này có nghĩa rằng chúng có thể
được gán vào các biến (như chúng được khi chúng được định nghĩa), truyền như các đối số tới các hàm khác, trả về
như các giá trị của các hàm khác, và lưu giữ trong các cấu trúc dữ liệu như các lists và dictionaries. Phiên làm
việc tiếp theo thể hiện một vài khả năng đơn giản hơn:
>>> abs # See what abs looks like
<built-in function abs>
>>> import math
>>> math.sqrt
<built-in function sqrt>
>>> f = abs # f is an alias for abs
>>> f # Evaluate f
<built-in function abs>
>>> f(-4) # Apply f to an argument
4
>>> funcs = [abs, math.sqrt] # Put the functions in a list
>>> funcs
[<built-in function abs>, <built-in function sqrt>]
>>> funcs[l](2) # Apply math.sqrt to 2
1.4142135623730951
Truyền một hàm như một đối số tới hàm khác là không khác so với truyền bất cứ dữ liệu nào khác. Đối số hàm được
đánh giá dầu tiên, sinh ra bản thân hàm, và sau đó tên tham só được gắn với giá trị này. Hàm sau đó có thể được
áp dụng vào bản thấn đối số của nó với cú pháp thông thường. Sau đây là một ví dụ, cái đơn giản trả về kết quả
của một ứng dụng về bất cứ hàm đối số đơn tới một dữ liệu:
>>> def applyFunc(functionArg, dataArg):
return functionArg(dataArg)
>>> applyFunc(abs, -4)
4
>>> applyFunc(math.sqrt, 2)
1.4142135623730951
