Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Partial Functions ใน Python: สร้างฟังก์ชันใหม่จากฟังก์ชันเดิม

Partial Function ช่วยให้เราสร้างฟังก์ชันใหม่จากฟังก์ชันเดิมโดย "ล็อก" ค่าพารามิเตอร์บางส่วนไว้ล่วงหน้า ทำให้โค้ด reusable และอ่านง่ายขึ้น Python ให้มาจากโมดูล functools

ตัวอย่างพื้นฐาน

>> from functools import partial
>>> from operator import add

>>> add(1, 2)
3

# สร้างฟังก์ชันใหม่ที่บวก 4 เข้าไปเสมอ
>>> add1 = partial(add, 4)
>>> add1(6)
10
>>> add1(10)
14

partial(add, 4) คืนฟังก์ชันใหม่ที่รับอาร์กิวเมนต์เดียว (y) และคืน 4 + y

ใช้กับ map() และฟังก์ชันระดับสูง

>> list(map(add1, [1, 2, 3, 4, 5]))
[5, 6, 7, 8, 9]

# สร้าง partial ซ้อนกัน
>>> seven = partial(add1, 3)
>>> seven()
7

ใช้กับ Method ของออบเจกต์

>> str1 = "Hello, Python"
>>> hello_str = partial(str1.replace, "Python")
>>> hello_str("Tutorialspoint")
'Hello, Tutorialspoint'
>>> hello_str("Java")
'Hello, Java'

ที่นี่ partial ล็อกอาร์กิวเมนต์แรกของ str.replace (คือ substring ที่จะแทนที่) ไว้เป็น "Python"

เมื่อไหร่ควรใช้ Partial Function?

  • ต้องเรียกฟังก์ชันเดิมหลายครั้งด้วยอาร์กิวเมนต์บางส่วนคงที่
  • ต้องส่งฟังก์ชัน callback ที่มี signature ตรงกับที่ framework ต้องการ
  • อยากลดความซ้ำซ้อนของ lambda ที่ซับซ้อน

Partial function เป็นเครื่องมือที่มีประโยชน์มากเมื่อต้องการผูกอาร์กิวเมนต์บางส่วนให้คงที่ และใช้ฟังก์ชันที่ได้เหมือนฟังก์ชันทั่วไป