การส่งผ่านอ็อบเจ็กต์เป็นพารามิเตอร์ใน Python

ตัวแปรที่มีอ็อบเจ็กต์ (เช่น ลิสต์ เซต ทูเพิล ดิกชันนารี) จะถูกส่งผ่านไปยังฟังก์ชันโดยการอ้างอิง (by reference) มาลองเขียน โค้ดในฟังก์ชันใหม่ เพื่อให้องค์ประกอบแรกของตัวแปรที่ส่งเข้ามา เปลี่ยนเป็นเครื่องหมายอัศเจรีย์ และด้านล่างฟังก์ชัน เราจะประกาศ ตัวแปรที่มีค่าเป็นลิสต์:

pythondef func(tst):
  tst[0] = '!'
  print(tst)
  
lst = [1, 2, 3, 4, 5]

เนื่องจากลิสต์ถูกส่งผ่านโดยการอ้างอิง เมื่อ เรียกใช้ฟังก์ชัน ค่าของ lst ในขอบเขตโกลบอลก็จะเปลี่ยนไปด้วย:

pythonfunc(lst) # จะแสดงผล ['!', 2, 3, 4, 5]
print(lst) # จะแสดงผล ['!', 2, 3, 4, 5]
Задание 1

ผลลัพธ์จากการรันโค้ดต่อไปนี้จะเป็นอย่างไร:

pythondef func(lst):
  lst[0] = '!'
  
lst = [1, 2, 3, 4, 5]
func(lst)

print(lst)
Задание 2

ผลลัพธ์จากการรันโค้ดต่อไปนี้จะเป็นอย่างไร:

pythondef func(lst):
  lst[0] = '!'
  
lst = [1, 2, 3, 4, 5]
lst = func(lst)

print(lst)
Задание 3

ผลลัพธ์จากการรันโค้ดต่อไปนี้จะเป็นอย่างไร:

pythondef func(lst):
  lst = '!'

lst = [1, 2, 3, 4, 5]
func(lst[0])

print(lst)
Задание 4

ผลลัพธ์จากการรันโค้ดต่อไปนี้จะเป็นอย่างไร:

pythondef func(dct):
  for key in dct.keys():
    dct[key] += 2
  
dct = {
  'a': 1,
  'b': 2,
  'c': 3,
}

func(dct)
print(dct)