할당에 의한 전달

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에 append

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에 append

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으로 함수 작성하기

할당에 의한 전달

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

RAM

Python으로 함수 작성하기

할당에 의한 전달

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

my_list = [1, 2, 3]

my_list 설정

Python으로 함수 작성하기

할당에 의한 전달

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

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

foo() 호출

Python으로 함수 작성하기

할당에 의한 전달

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

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

x와 my_list 업데이트

Python으로 함수 작성하기

할당에 의한 전달

def bar(x):
  x = x + 90

my_var = 3

my_var

Python으로 함수 작성하기

할당에 의한 전달

def bar(x):
  x = x + 90

my_var = 3
bar(my_var)

bar() 호출

Python으로 함수 작성하기

할당에 의한 전달

def bar(x):
  x = x + 90

my_var = 3
bar(my_var)
my_var
3

x를 새 값에 할당

Python으로 함수 작성하기

불변 vs 가변

불변(Immutable)

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

가변(Mutable)

  • list
  • dict
  • set
  • bytearray
  • 객체
  • 함수
  • 기타 대부분
Python으로 함수 작성하기

가변 기본 인자는 위험합니다!

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으로 함수 작성하기

Passons à la pratique !

Python으로 함수 작성하기

Preparing Video For Download...