π νμ΄μ¬ ν¨μμ ꡬ쑰λ λ€μκ³Ό κ°λ€.
def ν¨μλͺ
(λ§€κ°λ³μ) :
<μνν λ¬Έμ₯1>
<μνν λ¬Έμ₯2>
defλ ν¨μλ₯Ό λ§λ€ λ μ¬μ©νλ μμ½μ΄μ΄λ©°, ν¨μ μ΄λ¦μ ν¨μλ₯Ό λ§λλ μ¬λμ΄ μμλ‘ λ§λ€ μ μλ€. ν¨μ μ΄λ¦ λ€ κ΄νΈ μμ λ§€κ°λ³μλ μ΄ ν¨μμ μ λ ₯μΌλ‘ μ λ¬λλ κ°μ λ°λ λ³μμ΄λ€. μ΄λ κ² ν¨μλ₯Ό μ μν λ€μ if, while, forλ¬Έ λ±κ³Ό λ§μ°¬κ°μ§λ‘ ν¨μμμ μνν λ¬Έμ₯μ μ λ ₯νλ€.
μμ
def add(a, b) :
return a + b
a = 3
b = 4
c = add(a, b)
print(c)
μ¬κΈ°μμ returnμ ν¨μμ κ²°κ΄κ°μ λλ €μ£Όλ λͺ λ Ήμ΄μ΄λ€.
π λ§€κ°λ³μ(parameter)μ μΈμ(arguments)λ νΌμ©ν΄μ μ¬μ©λλ ν·κ°λ¦¬λ μ©μ΄μ΄λ―λ‘ μ κΈ°μ΅ν΄ λμ. λ§€κ°λ³μλ ν¨μμ μ λ ₯μΌλ‘ μ λ¬λ κ°μ λ°λ λ³μλ₯Ό μλ―Ένκ³ μΈμλ ν¨μλ₯Ό νΈμΆν λ μ λ¬νλ μ λ ₯κ°μ μλ―Ένλ€.
def add(a, b) : # a, bλ λ§€κ°λ³μ
return a+b
print(add(3, 4)) # 3, 4λ μΈμ
π ν¨μλ λ€μ΄μ¨ μ λ ₯κ°μ λ°μ μ΄λ€ μ²λ¦¬λ₯Ό νμ¬ μ μ ν κ²°κ΄κ°μ λλ €μ€λ€.
π₯ μ λ ₯κ° --> ν¨μ --> κ²°κ΄κ°
β½ ν¨μμ ννλ μ λ ₯κ°κ³Ό κ²°κ΄κ°μ μ‘΄μ¬ μ 무μ λ°λΌ 4κ°μ§ μ νμΌλ‘ λλλ€.
π μ λ ₯κ°μ΄ μκ³ κ²°κ΄κ°μ΄ μλ ν¨μκ° μΌλ°μ μΈ ν¨μμ΄λ€.
μμ)
def add(a, b) :
result = a + b
return result
a = add(3, 4)
print(a)

add ν¨μλ 2κ°μ μ
λ ₯κ°μ λ°μμ μλ‘ λν κ²°κ΄κ°μ λλ €μ€λ€.
μ΄μ²λΌ μ
λ ₯κ°κ³Ό κ²°κ΄κ°μ΄ μλ ν¨μμ μ¬μ©λ²μ μ 리νλ©΄ λ€μκ³Ό κ°λ€.
β κ²°κ΄κ°μ λ°μ λ³μ = ν¨μμ΄λ¦(μ
λ ₯μΈμ1, μ
λ ₯μΈμ2, ...)
μμ)
def say() :
return 'Hi'
a = say()
print(a)

μ ν¨μλ₯Ό μ°κΈ° μν΄μλ say()μ²λΌ κ΄νΈ μμ μ무 κ°λ λ£μ§ μμμΌ νλ€. μ΄ ν¨μλ μ
λ ₯κ°μ μμ§λ§ κ²°κ΄κ°μΌλ‘ HiλΌλ λ¬Έμμ΄μ λλ €μ€λ€. a = say()μ²λΌ μμ±νλ©΄ aμ Hi λ¬Έμμ΄μ΄ λμ
λλ κ²μ΄λ€.
μ΄μ²λΌ μ
λ ₯κ°μ΄ μκ³ κ²°κ΄κ°λ§ μλ ν¨μλ λ€μκ³Ό κ°μ΄ μ¬μ©λλ€.
β κ²°κ΄κ°μ λ°μ λ³μ = ν¨μμ΄λ¦()
μμ)
def add(a, b) :
print("%d, %dμ ν©μ %dμ
λλ€." %(a, b, a+b))
add(3, 4)

κ²°κ΄κ°μ΄ μλ ν¨μλ νΈμΆν΄λ λλ €μ£Όλ κ°μ΄ μκΈ° λλ¬Έμ μμ κ°μ΄ μ¬μ©νλ€.
μλ§λ μ¬λ¬λΆμ β3, 4μ ν©μ 7μ λλ€.βλΌλ λ¬Έμ₯μ μΆλ ₯ν΄ μ£Όμλλ° μ κ²°κ΄κ°μ΄ μλ€λ κ²μΈμ§ μμνκ² μκ°ν κ²μ΄λ€. μ΄ λΆλΆμ΄ μ΄λ³΄μλ€μ΄ νΌλμ€λ¬μνλ λΆλΆμ΄κΈ°λ νλ° printλ¬Έμ ν¨μμ κ΅¬μ± μμ μ€ νλμΈ <μνν λ¬Έμ₯>μ ν΄λΉνλ λΆλΆμΌ λΏμ΄λ€. κ²°κ΄κ°μ λΉμ°ν μλ€. κ²°κ΄κ°μ μ€μ§ return λͺ λ Ήμ΄λ‘λ§ λλ €λ°μ μ μλ€.
μ΄λ₯Ό νμΈν΄ 보μ. λλ €λ°μ κ°μ a λ³μμ λμ νμ¬ μΆλ ₯ν΄ λ³΄λ©΄ κ²°κ΄κ°μ΄ μλμ§ μλμ§ μ μ μλ€.
def add(a, b) :
print("%d, %dμ ν©μ %dμ
λλ€." %(a, b, a+b))
a = add(3, 4)
print(a)

a κ°μ Noneμ΄λ€. Noneμ΄λ κ±°μ§μ λνλ΄λ μλ£νμ΄λΌκ³ μΈκΈν μ μ΄ μλ€. add ν¨μμ²λΌ κ²°κ΄κ°μ΄ μμ λ a = add(3, 4)μ²λΌ μ°λ©΄ ν¨μ addλ λ°ν κ°μΌλ‘ a λ³μμ Noneμ λλ €μ€λ€. μ΄κ²μ κ°μ§κ³ κ²°κ΄κ°μ΄ μλ€κ³ μκ°νλ©΄ κ³€λνλ€.
μ¦ κ²°κ΄κ°μ΄ μλ ν¨μλ λ€μκ³Ό κ°μ΄ μ¬μ©νλ€.
β ν¨μμ΄λ¦(μ
λ ₯μΈμ1, μ
λ ₯μΈμ2, ...)
μμ)
def say() :
print('Hi')
say()
μ λ ₯ μΈμλ₯Ό λ°λ λ§€κ°λ³μλ μκ³ returnλ¬Έλ μμΌλ μ λ ₯κ°λ κ²°κ΄κ°λ μλ ν¨μμ΄λ€.
μ΄ ν¨μλ₯Ό μ¬μ©νλ λ°©λ²μ λ¨ ν κ°μ§μ΄λ€.
μ¦ μ
λ ₯κ°λ κ²°κ΄κ°λ μλ ν¨μλ λ€μκ³Ό κ°μ΄ μ¬μ©νλ€.
β ν¨μμ΄λ¦()
π ν¨μλ₯Ό νΈμΆν λ λ§€κ°λ³μλ₯Ό μ§μ ν μλ μλ€.
μμ)
def add(a, b) :
return a+b
result = add(a=3, b=7)
print(result)
result2 = add(b=5, a=3)
print(result2)

π μ λ ₯κ°μ΄ μ¬λ¬ κ°μΌ λ κ·Έ μ λ ₯κ°μ λͺ¨λ λν΄ μ£Όλ ν¨μλ₯Ό μκ°ν΄ 보μ. νμ§λ§ λͺ κ°κ° μ λ ₯λ μ§ λͺ¨λ₯Ό λλ μ΄λ»κ² ν΄μΌ ν κΉ? μλ§λ λκ°ν κ²μ΄λ€. νμ΄μ¬μ μ΄λ° λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ λ€μκ³Ό κ°μ λ°©λ²μ μ 곡νλ€.
def ν¨μμ΄λ¦(*λ§€κ°λ³μ) :
<μνν λ¬Έμ₯>
μΌλ°μ μΌλ‘ λ³Ό μ μλ ν¨μ ννμμ κ΄νΈ μμ λ§€κ°λ³μ λΆλΆμ΄ *λ§€κ°λ³μλ‘ λ°λμλ€.
λ€μ μλ₯Ό ν΅ν΄ μ¬λ¬ κ°μ μ λ ₯κ°μ λͺ¨λ λνλ ν¨μλ₯Ό μ§μ λ§λ€μ΄ 보μ. μλ₯Ό λ€μ΄ add_many(1, 2)μ΄λ©΄ 3μ, add_many(1,2,3)μ΄λ©΄ 6μ, add_many(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)μ΄λ©΄ 55λ₯Ό λλ €μ£Όλ ν¨μλ₯Ό λ§λ€μ΄ 보μ.
def add_many(*args) :
result = 0
for i in args :
result = result + i
return result
result = add_many(1, 2, 3)
print(result)
μμμ λ§λ add_many ν¨μλ μ λ ₯κ°μ΄ λͺ κ°μ΄λ μκ΄μ΄ μλ€. *argsμ²λΌ λ§€κ°λ³μ μ΄λ¦ μμ *μ λΆμ΄λ©΄ μ λ ₯κ°μ μ λΆ λͺ¨μμ ννλ‘ λ§λ€μ΄ μ£ΌκΈ° λλ¬Έμ΄λ€. λ§μ½ add_many(1, 2, 3)μ²λΌ μ΄ ν¨μλ₯Ό μ°λ©΄ argsλ (1, 2, 3)μ΄ λκ³ , add_many(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)μ²λΌ μ°λ©΄ argsλ (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)μ΄ λλ€. μ¬κΈ°μμ *argsλ μμλ‘ μ ν λ³μ μ΄λ¦μ΄λ€. *pey, *pythonμ²λΌ μ무 μ΄λ¦μ΄λ μ¨λ λλ€.
π **kwargsμ²λΌ λ§€κ°λ³μ μ΄λ¦ μμ **μ λΆμ΄λ©΄ λ§€κ°λ³μ kwargsλ λμ λλ¦¬κ° λκ³ λͺ¨λ key=value ννμ κ²°κ΄κ°μ΄ κ·Έ λμ λ리μ μ μ₯λλ€.
μμ )
def print_kwargs(**kwargs) :
print(kwargs)
print_kwargs(a=1)
print_kwargs(name='foo', age=3)

λ€μ μμλ₯Ό 보μ.
def add_and_mul(a, b) :
return a+b, a*b
result = add_and_mul(3, 4)
print(result)

κ²°κ΄κ°μ a+bμ a*b 2κ°μΈλ° κ²°κ΄κ°μ λ°μλ€μ΄λ λ³μλ result νλλ§ μ°μμΌλ μ€λ₯κ° λ°μνμ§ μμκΉ? λΉμ°ν μλ¬Έμ΄λ€. νμ§λ§ μ€λ₯λ λ°μνμ§ μλλ€. κ·Έ μ΄μ λ ν¨μμ κ²°κ΄κ°μ 2κ°κ° μλλΌ μΈμ λ 1κ°λΌλ λ° μλ€. add_and_mul ν¨μμ κ²°κ΄κ° a+bμ a*bλ ννκ° νλμΈ (a+b, a*b)λ‘ λλ €μ€λ€.
μ¦ κ²°κ΄κ°μΌλ‘ (7, 12)λΌλ νν κ°μ κ°κ² λλ κ²μ΄λ€.
λ§μ½ μ΄ νλμ νν κ°μ 2κ°μ κ²°κ΄κ°μ²λΌ λ°κ³ μΆλ€λ©΄ λ€μκ³Ό κ°μ΄ ν¨μλ₯Ό νΈμΆνλ©΄ λλ€.
result1, result2 = add_and_mul(3, 4)
μ΄λ κ² νΈμΆνλ©΄ result1, result2 = (7, 12)κ° λμ΄ result1μ 7μ΄ λκ³ result2λ 12κ° λλ€.
λ λ€μκ³Ό κ°μ μλ¬Έμ΄ μκΈΈ μλ μλ€.
def add_and_mul(a, b) :
return a+b
return a*b
result = add_and_mul(3, 4)
print(result)

μμ κ°μ΄ returnλ¬Έμ 2λ² μ¬μ©νλ©΄ 2κ°μ κ²°κ΄κ°μ λλ €μ£Όμ§ μμκΉ? νμ§λ§ νμ΄μ¬μμ μμ κ°μ ν¨μλ μ°Έ μ΄λ¦¬μμ ν¨μμ΄λ€.
μμμ λ³Ό μ μλ―μ΄ λ λ²μ§Έ returnλ¬ΈμΈ return a*bλ μ€νλμ§ μμλ€. λ°λΌμ μ΄ ν¨μλ λ€μκ³Ό μμ ν λμΌνλ€.
def add_and_mul(a, b) :
return a+b
π₯ μ¦ ν¨μλ returnλ¬Έμ λ§λλ μκ° κ²°κ΄κ°μ λλ €μ€ λ€μ ν¨μλ₯Ό λΉ μ Έλκ°κ² λλ€.
π νΉλ³ν μν©μΌ λ ν¨μλ₯Ό λΉ μ Έλκ°κ³ μΆλ€λ©΄ returnμ λ¨λ μΌλ‘ μ¨μ ν¨μλ₯Ό μ¦μ λΉ μ Έλκ° μ μλ€. λ€μ μλ₯Ό 보μ.
def say_nick(nick) :
if nick == "λ°λ³΄" :
return
print("λμ λ³λͺ
μ %s μ
λλ€." %nick)
say_nick('μΌνΈ')
say_nick('λ°λ³΄')

μ ν¨μλ 'λ³λͺ
'μ μ
λ ₯μΌλ‘ μ λ¬λ°μ μΆλ ₯νλ ν¨μμ΄λ€. μ΄ ν¨μ μμ λ°ν κ°(κ²°κ΄κ°)μ μλ€.
λ§μ½μ μ λ ₯κ°μΌλ‘ 'λ°λ³΄'λΌλ κ°μ΄ λ€μ΄μ€λ©΄ λ¬Έμμ΄μ μΆλ ₯νμ§ μκ³ ν¨μλ₯Ό μ¦μ λΉ μ Έλκ°λ€.
μ΄μ²λΌ returnμΌλ‘ ν¨μλ₯Ό λΉ μ Έλκ°λ λ°©λ²μ μ€μ νλ‘κ·Έλλ°μμ μμ£Ό μ¬μ©νλ€.
μμ)
def say_myself(name, old, man=True):
print("λμ μ΄λ¦μ %s μ
λλ€." % name)
print("λμ΄λ %dμ΄μ
λλ€." % old)
if man:
print("λ¨μμ
λλ€.")
else:
print("μ¬μμ
λλ€.")
say_myself("λ°μμ©", 27)
say_myself("λ°μμ©", 27, True)

μ μμμμ 2κ°μ§ λ°©λ²μ λͺ¨λ λμΌν κ²°κ³Όλ₯Ό μΆλ ₯νλ€λκ²μ λ³Ό μ μλ€.
νμ§λ§ ν¨μμ λ§€κ°λ³μμ μ΄κΉκ°μ μ€μ ν λ μ£Όμν κ²μ΄ νλ μλ€. λ§μ½ μμμ λ³Έ say_myself ν¨μλ₯Ό λ€μκ³Ό κ°μ΄ λ§λ€λ©΄ μ΄λ»κ² λ κΉ?
def say_myself(name, man=True, old):
print("λμ μ΄λ¦μ %s μ
λλ€." % name)
print("λμ΄λ %dμ΄μ
λλ€." % old)
if man:
print("λ¨μμ
λλ€.")
else:
print("μ¬μμ
λλ€.")
say_myself("λ°μμ©", 27)
μ΄μ ν¨μμ λ°λ λΆλΆμ μ΄κΉκ°μ μ€μ ν λ§€κ°λ³μμ μμΉμ΄λ€. κ²°λ‘ μ 미리 λ§νλ©΄ μ΄κ²μ ν¨μλ₯Ό μ€νν λ μ€λ₯κ° λ°μνλ€.
μ€λ₯ λ©μμ§λ₯Ό 보면 λ€μκ³Ό κ°λ€.
SyntaxError: non-default argument follows default argument
μ μ€λ₯ λ©μμ§λ μ΄κΉκ°μ μ€μ ν΄ λμ λ§€κ°λ³μ λ€μ μ΄κΉκ°μ μ€μ ν΄ λμ§ μμ λ§€κ°λ³μλ μ¬μ©ν μ μλ€λ λ»μ΄λ€. μ¦ λ§€κ°λ³μλ‘ (name, old, man=True)λ λμ§λ§ (name, man=True, old)λ μ λλ€λ κ²μ΄λ€.
π₯ μ΄κΈ°νμν€κ³ μΆμ λ§€κ°λ³μλ₯Ό νμ λ€μͺ½μ λλ κ²μ μμ§ λ§μ.