Trong các ngôn ngữ lập trình khác nhau, First Class objects (đối tượng bậc nhất) là những đối tượng có thể được xử lý một cách đồng nhất. First Class objects có thể được lưu trữ như Cấu trúc Dữ liệu, như một số tham số của một số hàm khác, như cấu trúc điều khiển, v.v. Chúng ta có thể nói rằng một hàm trong Python là First Class Function (Hàm bậc nhất), nếu nó hỗ trợ tất cả các thuộc tính của một First Class object.
Thuộc tính của First Class Functions là gì?
- Là một thể hiện của kiểu Object
- Hàm có thể được lưu trữ như biến
- Truyền First Class Function làm đối số của một số hàm khác
- Trả về Hàm từ hàm khác
- Lưu trữ Hàm trong danh sách, set hoặc một số cấu trúc dữ liệu khác.
Trước tiên chúng ta sẽ xem cách Hàm trong Python có thể được dùng như một đối tượng. Trong Python, một hàm có thể được gán như biến. Để gán nó như biến, hàm sẽ không được gọi. Vì vậy dấu ngoặc '()' sẽ không có mặt.
Mã ví dụ
def cube(x):
return x*x*x
res = cube(5)
print(res)
my_cube = cube # my_cube giống hệt phương thức cube
res = my_cube(5)
print(res)
Đầu ra
125 125
Bây giờ chúng ta sẽ xem cách hàm có thể được truyền làm đối số của hàm khác. Đây là ví dụ.
Mã ví dụ
def cube(x):
return x*x*x
def my_map(method, argument_list):
result = list()
for item in argument_list:
result.append(method(item))
return result
my_list = my_map(cube, [1, 2, 3, 4, 5, 6, 7, 8]) # Truyền hàm làm đối số
print(my_list)
Đầu ra
[1, 8, 27, 64, 125, 216, 343, 512]
Đây là thuộc tính thứ ba của First Class Functions. Trong trường hợp này chúng ta sẽ trả về một hàm từ một hàm khác.
Mã ví dụ
def create_logger(message):
def log():
print('Log Message: ' + message)
return log # Trả về một hàm
my_logger = create_logger('Hello World')
my_logger()
Đầu ra
Log Message: Hello World