ในภาษาโปรแกรมมิ่งต่างๆ First Class objects คือ objects ที่สามารถจัดการได้อย่างสม่ำเสมอ First Class objects สามารถเก็บเป็น Data Structures, เป็น parameters ของฟังก์ชันอื่นๆ, เป็น control structures ฯลฯ เราสามารถพูดได้ว่า function ใน Python เป็น First Class Function หากรองรับ properties ทั้งหมดของ First Class object
Properties ของ First Class Functions คืออะไร?
- เป็น instance ของ Object type
- Functions สามารถเก็บเป็น variable ได้
- ส่ง First Class Function เป็น argument ของฟังก์ชันอื่นๆ
- Return functions จากฟังก์ชันอื่น
- เก็บ Functions ใน lists, sets หรือ data structures อื่นๆ
ก่อนอื่นเราจะดูวิธีที่ Functions ใน Python ใช้เป็น object ใน Python ฟังก์ชันสามารถ assign เป็น variable ได้ เพื่อ assign เป็น variable ฟังก์ชันจะไม่ถูกเรียก ดังนั้น parentheses '()' จะไม่มี
ตัวอย่างโค้ด
def cube(x):
return x*x*x
res = cube(5)
print(res)
my_cube = cube # my_cube เหมือนกับ cube method
res = my_cube(5)
print(res)
ผลลัพธ์
125 125
ตอนนี้เราจะดูวิธีที่ functions สามารถส่งเป็น argument ของฟังก์ชันอื่นๆ ตัวอย่างดังนี้:
ตัวอย่างโค้ด
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]) # ส่งฟังก์ชันเป็น argument
print(my_list)
ผลลัพธ์
[1, 8, 27, 64, 125, 216, 343, 512]
นี่คือ property ที่สามของ First Class Functions ในกรณีนี้เราจะ return ฟังก์ชันหนึ่งจากอีกฟังก์ชันหนึ่ง
ตัวอย่างโค้ด
def create_logger(message):
def log():
print('Log Message: ' + message)
return log # Return a function
my_logger = create_logger('Hello World')
my_logger()
ผลลัพธ์
Log Message: Hello World