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

วิธีส่งอาร์กิวเมนต์แบบ Pass by Value ในฟังก์ชัน Python

Python ไม่มีการส่งแบบ Pass by Value ในความหมายดั้งเดิม แต่เมื่อส่งออบเจ็กต์ที่ "ไม่เปลี่ยนแปลงได้" (immutable) เช่น integer, string, tuple จะดูเหมือนส่งแบบ value เพราะไม่สามารถแก้ไขค่าเดิมได้

ตัวอย่าง

def modify(x):
    x = 30  # ผูกชื่อ x กับออบเจ็กต์ใหม่ ไม่ได้แก้ออบเจ็กต์เดิม

a = [10]  # list เป็น mutable
modify(a)  # ส่ง list เข้าไป แต่ในฟังก์ชัน reassign x
print("a =", a)  # a ยังคงเป็น [10] เพราะ x ถูกผูกใหม่

กรณีนี้ a ไม่เปลี่ยนแปลง เพราะภายในฟังก์ชัน x = 30 สร้างการผูกตัวแปรใหม่ (rebinding) ไม่ได้แก้ไข list เดิม