พารามิเตอร์ทั้งหมด (อาร์กิวเมนต์) ในภาษา Python ถูกส่งผ่านโดยการอ้างอิง หมายความว่าหากคุณเปลี่ยนสิ่งที่พารามิเตอร์อ้างถึงภายในฟังก์ชัน การเปลี่ยนแปลงจะสะท้อนกลับในฟังก์ชันการเรียกด้วย
ตัวอย่าง
#!/usr/bin/python# นิยามฟังก์ชัน is heredef changeme( mylist ):"สิ่งนี้เปลี่ยนรายการที่ส่งผ่านเป็นฟังก์ชันนี้"mylist.append([1,2,3,4]); พิมพ์ "ค่าภายใน ฟังก์ชัน:", mylistreturn# ตอนนี้คุณสามารถเรียก changeme functionmylist =[10,20,30];changeme( mylist );print "Values outside the function:", mylist
ผลลัพธ์
ที่นี่ เรากำลังคงการอ้างอิงของวัตถุที่ส่งผ่านและต่อท้ายค่าในวัตถุเดียวกัน ดังนั้นสิ่งนี้จะทำให้เกิดผลลัพธ์ดังต่อไปนี้ -
ค่าภายในฟังก์ชัน:[10, 20, 30, [1, 2, 3, 4]]ค่าภายนอกฟังก์ชัน:[10, 20, 30, [1, 2, 3, 4]]
มีอีกตัวอย่างหนึ่งที่อาร์กิวเมนต์ถูกส่งผ่านโดยการอ้างอิงและการอ้างอิงถูกเขียนทับภายในฟังก์ชันที่เรียก
ตัวอย่าง
#!/usr/bin/python# นิยามฟังก์ชัน is heredef changeme( mylist ):"สิ่งนี้เปลี่ยนรายการที่ส่งผ่านเป็นฟังก์ชันนี้"mylist =[1,2,3,4]; # สิ่งนี้จะกำหนดการอ้างอิงใหม่ใน mylistprint "ค่าภายในฟังก์ชัน:", mylistreturn# ตอนนี้คุณสามารถเรียก changeme functionmylist =[10,20,30];changeme( mylist );print "Values outside the function:", mylistก่อน>ผลลัพธ์
พารามิเตอร์ mylist อยู่ในเครื่องของฟังก์ชัน changeme การเปลี่ยน mylist ภายในฟังก์ชันจะไม่มีผลกับ mylist ฟังก์ชันนี้ไม่ได้ผลและในที่สุดก็จะได้ผลลัพธ์ดังต่อไปนี้ -
ค่าภายในฟังก์ชัน:[1, 2, 3, 4]ค่าภายนอกฟังก์ชัน:[10, 20, 30]