การส่งค่าแบบ assignment

การเขียนฟังก์ชันใน Python

Shayne Miel

Software Architect @ Duo Security

ตัวอย่างที่น่าแปลกใจ

def foo(x):
  x[0] = 99

my_list = [1, 2, 3]
foo(my_list)
print(my_list)
[99, 2, 3]
def bar(x):
  x = x + 90

my_var = 3
bar(my_var)
print(my_var)
3
การเขียนฟังก์ชันใน Python

เจาะลึกเพิ่มเติม

RAM

การเขียนฟังก์ชันใน Python

เจาะลึกเพิ่มเติม

a = [1, 2, 3]

การกำหนดค่า a

การเขียนฟังก์ชันใน Python

เจาะลึกเพิ่มเติม

a = [1, 2, 3]

b = a

b เท่ากับ a

การเขียนฟังก์ชันใน Python

เจาะลึกเพิ่มเติม

a = [1, 2, 3]

b = a
a.append(4)
print(b)
[1, 2, 3, 4]

เพิ่มค่าใน a

การเขียนฟังก์ชันใน Python

เจาะลึกเพิ่มเติม

a = [1, 2, 3]

b = a
a.append(4)
print(b)
[1, 2, 3, 4]
b.append(5)

print(a)
[1, 2, 3, 4, 5]

เพิ่มค่าใน b

การเขียนฟังก์ชันใน Python

เจาะลึกเพิ่มเติม

a = [1, 2, 3]

b = a
a.append(4)
print(b)
[1, 2, 3, 4]
b.append(5)

print(a)
[1, 2, 3, 4, 5]
a = 42

a เท่ากับ 42

การเขียนฟังก์ชันใน Python

การส่งค่าแบบ assignment

def foo(x):
  x[0] = 99

RAM

การเขียนฟังก์ชันใน Python

การส่งค่าแบบ assignment

def foo(x):
  x[0] = 99

my_list = [1, 2, 3]

การกำหนดค่า my_list

การเขียนฟังก์ชันใน Python

การส่งค่าแบบ assignment

def foo(x):
  x[0] = 99

my_list = [1, 2, 3]
foo(my_list)

การเรียก foo()

การเขียนฟังก์ชันใน Python

การส่งค่าแบบ assignment

def foo(x):
  x[0] = 99

my_list = [1, 2, 3]
foo(my_list)
print(my_list)
[99, 2, 3]

การอัปเดต x และ my_list

การเขียนฟังก์ชันใน Python

การส่งค่าแบบ assignment

def bar(x):
  x = x + 90

my_var = 3

my_var

การเขียนฟังก์ชันใน Python

การส่งค่าแบบ assignment

def bar(x):
  x = x + 90

my_var = 3
bar(my_var)

การเรียก bar()

การเขียนฟังก์ชันใน Python

การส่งค่าแบบ assignment

def bar(x):
  x = x + 90

my_var = 3
bar(my_var)
my_var
3

กำหนด x ให้ชี้ไปยังค่าใหม่

การเขียนฟังก์ชันใน Python

Immutable หรือ Mutable?

Immutable

  • int
  • float
  • bool
  • string
  • bytes
  • tuple
  • frozenset
  • None

Mutable

  • list
  • dict
  • set
  • bytearray
  • objects
  • functions
  • almost everything else!
การเขียนฟังก์ชันใน Python

อาร์กิวเมนต์ default แบบ mutable อันตราย!

def foo(var=[]):
  var.append(1)
  return var

foo()
[1]
foo()
[1, 1]
def foo(var=None):
  if var is None:
    var = []
  var.append(1)
  return var

foo()
[1]
foo()
[1]
การเขียนฟังก์ชันใน Python

มาฝึกกันเถอะ!

การเขียนฟังก์ชันใน Python

Preparing Video For Download...