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

ผ่านโดยการอ้างอิงเทียบกับค่าใน Python


พารามิเตอร์ทั้งหมด (อาร์กิวเมนต์) ในภาษา 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]