π¨βπ»πΒ [Python] Function Argument
π¨βπ©βπ§βπ¦Β Function Argument
νμ΄μ¬μ λͺ¨λ λ©μλλ κΈ°λ³Έμ μΌλ‘ μΈμλ₯Ό call by value
ννλ‘ μ λ¬ν΄μΌ νλ€. νμ§λ§ call by value
λΌκ³ ν΄μ ν¨μμ λμκ³Ό μλ³Έ λ³μκ° μμ ν λ
립μ μΈ κ²μ μλλ€. μ΄κ²μ μΈμλ‘ μ΄λ€ λ°μ΄ν° νμ
μ μ λ¬νλκ°μ λ°λΌ λ¬λΌμ§λ€. λ§μ½ μΈμλ‘ mutable(dynamic)
κ°μ²΄μΈ 리μ€νΈ λ³μλ₯Ό μ λ¬νλ€λ©΄, ν¨μμ λμμ λ°λ₯Έ κ²°κ³Όκ° κ·Έλλ‘ λ³μμ λ°μλλ€. mutable
κ°μ²΄λ ν¨μ μ€μ½ν λ΄λΆ μ§μ λ³μμ μΉ΄νΌ λμ§ μκΈ° λλ¬Έμ μ΄λ° νμμ΄ λ°μνλ€. λ°λΌμ μΈμλ‘ λ¦¬μ€νΈμ κ°μ mutable
κ°μ²΄λ₯Ό μ λ¬νλ κ²μ μλ§μ λΆμμ©μ λΆλ¬μ€κΈ° λλ¬Έμ μ§μνλκ² μ’λ€. μλ μμ μ½λλ₯Ό 보μ.
""" function argument experiment with mutable vs immutable """
def function(args):
args += 'in runtime'
print(args)
# immutable object string
>>> immutable = 'immutable'
>>> function(immutable)
immutable in runtime
>>> print(mmutable)
immutable
# mutable object list
>>> mutable = list('mutable')
>>> function(mutable)
['m', 'u', 't', 'a', 'b', 'l', 'e', ' ', 'i', 'n', ' ', 'r', 'u', 'n', 't', 'i', 'm', 'e']
>>> print(mutable)
['m', 'u', 't', 'a', 'b', 'l', 'e', ' ', 'i', 'n', ' ', 'r', 'u', 'n', 't', 'i', 'm', 'e']
λμΌν ν¨μμ λμΌνκ² μΈμλ‘ μ¬μ©νμ§λ§, immutable
κ°μ²΄μΈ λ¬Έμμ΄μ ν¨μμ μ€ν κ²°κ³Όμ μ ν 무κ΄ν λͺ¨μ΅μ΄λ€. νμ§λ§ mutable
κ°μ²΄μΈ 리μ€νΈλ ν¨μμ μ€ν κ²°κ³Όκ° μ€μ½ν λ°κΉ₯μ μλ³Έ λ³μμ κ·Έλλ‘ λ°μλμμμ νμΈν μ μλ€. μ΄κ²μ 리μ€νΈκ° κΈ°λ³Έμ μΌλ‘ 컨ν
μ΄λ λ΄λΆμ μ€μ κ°μ΄ μλ μ£Όμ κ°μ κ°κ³ μκ³ , Resize()
μ°μ°μ ν΅ν΄ μμ μ΄ κ°λ₯νκΈ° λλ¬Έμ΄λ€. ννΈ, immutable
κ°μ²΄μ κ²½μ° μλ³Έ μμ μ΄ λΆκ°νκΈ° λλ¬Έμ κ΄λ ¨ μ°μ° νΉμ λͺ
λ Ήμ λ§λλ©΄ deepcopy
κ° λ°μνλ€.
Leave a comment