ในภาษาการเขียนโปรแกรมต่างๆ ออบเจ็กต์ First Class คืออ็อบเจ็กต์เหล่านั้น ซึ่งสามารถจัดการได้อย่างเท่าเทียมกัน วัตถุชั้นหนึ่งสามารถจัดเก็บเป็นโครงสร้างข้อมูลเป็นพารามิเตอร์บางตัวของฟังก์ชันอื่น ๆ เป็นโครงสร้างการควบคุม ฯลฯ เราสามารถพูดได้ว่าฟังก์ชันใน Python เป็นฟังก์ชันชั้นหนึ่ง หากรองรับคุณสมบัติทั้งหมดของวัตถุชั้นหนึ่ง
คุณสมบัติของ First Class Function คืออะไร
- เป็นตัวอย่างของประเภท Object
- ฟังก์ชั่นสามารถเก็บไว้เป็นตัวแปรได้
- ส่งฟังก์ชันชั้นหนึ่งเป็นอาร์กิวเมนต์ของฟังก์ชันอื่นๆ
- คืนค่าฟังก์ชันจากฟังก์ชันอื่น
- จัดเก็บฟังก์ชันในรายการ ชุด หรือโครงสร้างข้อมูลอื่นๆ
ตอนแรกเราจะมาดูกันว่า Functions ใน Python สามารถใช้เป็นวัตถุได้อย่างไร ใน Python สามารถกำหนดฟังก์ชันเป็นตัวแปรได้ ในการกำหนดให้เป็นตัวแปร ฟังก์ชันจะไม่ถูกเรียก ดังนั้นวงเล็บ '()' จะไม่อยู่ที่นั่น
โค้ดตัวอย่าง
def cube(x): return x*x*x res = cube(5) print(res) my_cube = cube #The my_cube is same as the cube method res = my_cube(5) print(res)
ผลลัพธ์
125 125
ตอนนี้เราจะดูว่าฟังก์ชันสามารถส่งผ่านเป็นอาร์กิวเมนต์ของฟังก์ชันอื่นได้อย่างไร นี่คือตัวอย่าง
โค้ดตัวอย่าง
def cube(x): return x*x*x defmy_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]) #Pass the function as argument print(my_list)
ผลลัพธ์
[1, 8, 27, 64, 125, 216, 343, 512]
นี่คือคุณสมบัติที่สามของฟังก์ชันชั้นหนึ่ง ในกรณีนี้ เราจะคืนค่าฟังก์ชันหนึ่งจากฟังก์ชันอื่น
โค้ดตัวอย่าง
defcreate_logger(message): deflog(): print('Log Message: ' + message) return log #Return a function my_logger = create_logger('Hello World') my_logger()
ผลลัพธ์
Log Message: Hello World