Python ν¨μ(Function)μ μ¬μ©λ²κ³Ό λΆλ₯
Function
νλ‘κ·Έλλ° μΈμ΄μμ ν¨μλ νΉμ κΈ°λ₯μ μννλ μ½λλ₯Ό μ¬μ¬μ© λ° λ³΄μκ° κ°λ₯ν ννμ μ½λ λΈλμ΄λ€.
Pythonμμ ν¨μλ₯Ό μ¬μ©νκΈ° μν΄μλ def ν¨μλͺ
(λ§€κ°λ³μ):λ‘ μ μΈμ ν λ€, λ€μ¬μ°κΈ°λ₯Ό ν ν¨μ λͺΈμ²΄λ₯Ό ꡬννλ©΄ λλ€.

μμ κ·Έλ¦Όκ³Ό κ°μ΄ inputκ³Ό outputμΌλ‘ λλλλ° μ°λ¦¬λ μμΌλ‘ inputμ λ§€κ°λ³μ, outputμ λ°ν κ°, ν¨μ λͺΈμ²΄λ‘ ννν κ²μ΄λ€.
ν¨μμ λΆλ₯λ λ€μκ³Ό κ°μ 4κ°μ§λ‘ λλ μ μλλ° λλλ κΈ°μ€μ λ§€κ°λ³μκ° μλ μλ, λ°ν κ°μ΄ μλ μλλ‘ λλλ€.
λ§€κ°λ³μ (X) λ°ν κ° (X)
def intro():
print('hello world')
intro()
λ§€κ°λ³μ (O) λ°ν κ° (X)
def intro(arg):
print(arg+"λ₯Ό μ
λ ₯νμ
¨μ΅λλ€.")
intro(input('μ«μλ₯Ό μ
λ ₯νμΈμ '))
>>>
1234λ₯Ό μ
λ ₯νμ
¨μ΅λλ€.
λ§€κ°λ³μ (X) λ°ν κ° (O)
def intro():
return 10
print(intro(), 'μ΄ μΆλ ₯λ©λλ€')
>>>
10 μ΄ μΆλ ₯λ©λλ€.
λ§€κ°λ³μ (O) λ°ν κ° (X)
list_t = []
def fill():
list_t.append('filled')
fill()
fill()
fill()
fill()
print(list_t)
>>>
['filled', 'filled', 'filled', 'filled']
μμ κ°μ΄ λ°ν κ°κ³Ό λ§€κ°λ³μμ λ°λΌ ν¨μμ κΈ°λ₯κ³Ό λͺ©μ μ΄ λ¬λΌμ§λλ° μ΄λ νΉμ μ«μ, λ¬Έμμ΄, μνμ€μλ§ μ μ©λλ κ²μ΄ μλλΌ λ€λ°©λ©΄μΌλ‘ μ μ©λλλ° μ°¨μ°¨ λ°°μκ°λ©΄μ λλΌλ©΄ λλ€!!
μΈμμ λ§€κ°λ³μμ μ°¨μ΄μ
νλ‘κ·Έλλ°μ 곡λΆνλ€λ³΄λ©΄ λΉμ·ν λ¨μ΄κ° κ³μ λμ€κ³ κ·Έ κ²λ€μ΄ μ°λ¦¬λ₯Ό νλ€κ² νλ€... μ κ·Έλλ νλ 곡λΆμ κ·Έλ° μ‘λ€νκ² νλ€κ² ν μ μμΌλ μ΄μ₯λΆν° μμ ν μκ³ λμ΄κ°μ.
-
μΈμ(argument)
ν¨μλ‘ μ λ¬λλ κ° -
λ§€κ°λ³μ(parameter)
ν¨μμμ μΈμλ‘ μ λ¬λ κ°μ 볡μ¬νμ¬ λ£λ λ³μ
μμΉ μΈμμ ν€μλ μΈμ
Pythonμ λ€λ₯Έ μΈμ΄μ ν¨μμ λΉν΄ κ΅μ₯ν μ μ°νκ³ , λ νΉνκ² μ²λ¦¬νλ€.
μμΉ μΈμλ, μ°λ¦¬κ° μΌλ°μ μΌλ‘ μκ³ μλ ν¨μμ νΉμ±(μΈμλ λ€μ΄μ¨ μμμ λ°λΌ κ²°μ λλ€)κ³Ό κ°λ€.
νμ§λ§ ν€μλ μΈμλ, λ§€κ°λ³μμ μμνλ μ΄λ¦μ μΈμμ μ§μ νλ κ²μ μλ―Ένλ€.
λ€μ μλ₯Ό 보μ.
μμΉ μΈμ
def add(a, b, c):
sum = (a + b + c)
return sum
print(add(1,2,3))
addμ μΈμλ‘ λ€μ΄κ° 1,2,3μ κ°κ° a, b, cμ μμλλ‘ ν λΉλλ€!
ν€μλ μΈμ
def lunch(juice, dessert, main_dish):
return {'main_dish': main_dish, 'juice':juice, 'dessert':dessert}
print(lunch('orange', 'ice Cream', 'steak'))
>>
{'main_dish': 'steak', 'juice': 'orange', 'dessert': 'ice Cream'}
μ΄κ²μ΄ μμΉμΈμμ κΈ°λ°ν μ μμΈλ° ν€μλ μΈμλ₯Ό μ¬μ©νλ©΄ μμΉ μΈμμ λ²μΉμ μλ°°ν΄μ μΈμλ‘ κ°μ λκΈΈ μ μλ€.
def lunch(juice, dessert, main_dish):
return {'main_dish': main_dish, 'juice':juice, 'dessert':dessert}
print(lunch(dessert='ice Cream', juice='grape juice', main_dish='fish'))
>>
{'main_dish': 'fish', 'juice': 'grape juice', 'dessert': 'ice Cream'}
κΈ°λ³Έ λ§€κ°λ³μκ° μ§μ νκΈ°
ν¨μλ₯Ό νΈμΆν λ λ§€κ°λ³μκ° μμΌλ©΄ ν¨μ νΈμΆμ΄ λΆκ°λ₯νλ€. νμ§λ§ Pythonμ κΈ°λ³Έ λ§€κ°λ³μ κ°μ΄λΌλ κΈ°λ₯μ μ 곡νλ€.
def lunch(juice, dessert, main_dish = 'steak'):
return {'main_dish': main_dish, 'juice':juice, 'dessert':dessert}
print(lunch('orange', 'ice Cream'))
>>>
{'main_dish': 'steak', 'juice': 'orange', 'dessert': 'ice Cream'}
μλ lunch()λ λ§€κ°λ³μλ₯Ό 3κ°λ₯Ό λ°μμΌ νμ§λ§ print(lunch())μμ λ§€κ°λ³μλ₯Ό 2κ°λ§ μ£Όλ μν©μ΄ λμλ€.
κ·Έλ μ§λ§ 첫 λ²μ§Έ def lunch(juice, dessert, main_dish = 'steak') λλ¬Έμ λ§€κ°λ³μμ κ°―μκ° λ§μ§ μμλ μ μ μ€νμ΄ κ°λ₯νλ€.
νμ§λ§ μ£Όμν΄μΌν μ μ΄ μλλ°, κΈ°λ³Έ μΈμκ°μ ν¨μκ° νΈμΆλ λ κ³μ°λλ κ²μ΄ μλλΌ μ μλ λ κ³μ°λλ€.
κ·Έλμ λ³κ²½ λΆκ°λ₯ν νν νμ μ μνμ€λ§ κΈ°λ³Έ μΈμλ‘μ¨ μ¬μ©κ°λ₯νλ€.
μμΉ μΈμ λͺ¨μΌκΈ° : *
ν¨μμ λ§€κ°λ³μμ *μ μ¬μ©νλ€λ©΄, λ§€κ°λ³μμμ μμΉν μΈμ λ³μλ€μ ννλ‘ λ¬Άλλ€.
μ¬μ©λ²μ μλμ κ°μ΄ λ§€κ°λ³μ μμ*λ₯Ό λΆνμ€λ€.
def print_args(*some):
print('Some tuple in : ', some)
print(print_args('efg','abc'))
>>>
Some tuple in : ('asdf', 'asdf')
μ΄λ κ² λλ€λ©΄ λ§€κ°λ³μκ° λͺ κ°κ° μ€λ νλμ νν μμ μ μ₯λκ² λλ©° λ§€κ°λ³μμ μ μ°μ±μ μ 곡νλ€.
κ·Έλ λ€λ©΄ μ¬λ¬ λ§€κ° λ³μλ₯Ό μ무μ μΌλ‘ λ°κ³ μΆκ°μ μΈ λ§€κ°λ³μλ₯Ό λ°μ λλ? λ€μκ³Ό κ°λ€.
def print_args(var1, var2, *other_var):
print('var1: ', var1, ' var2: ', var2)
print('other var is : ', other_var)
print(print_args('efg','abc', 'var3', 'kim', 'temp'))
>>>
var1: efg var2: abc
other var is : ('var3', 'kim', 'temp')
μ΄λ° μμΌλ‘ *κ° λΆμ λ§€κ°λ³μλ‘ λ€μ΄μ¨ μΈμ κ°λ€μ λͺ¨λ ν ννμ μ μ₯λλ€.
λ§€κ°λ³μ 3κ°μ§ λ°©μμ λν΄ μ 리νμλ©΄
ν¨μμ λ§€κ°λ³μ 3κ°μ§ λ°©μ
func1(v1, v2, v3): λ§€κ°λ³μλ₯Ό μ§μ ν΄μ£Όκ³ μ λ¬func2(*args): λ§€κ°λ³μλ₯Ό μ§μ νμ§ μκ³ μ λ¬.func3(**kwargs):
func1(v1, v2, v3)
μμΉ μΈμ μ§μ μ΄λΌκ³ ν¨(κ°μ λ§€κ°λ³μμ μμνλ λ³μμ 볡μ¬)
κΈ°λ³Έμ μΌλ‘ λ€λ₯Έ μΈμ΄μμ ν¨μ(λ©μλ)μ μ¬μ©λ²κ³Ό λΉμ·ν¨
μλ£νμ΄ μλ pythonμ νΉμ§μΌλ‘ λ³μ μ΄λ¦λ§ μ£Όλ©΄ λ¨.
μΆκ°μ μΌλ‘ func1(v1, v2, v3 = 0) μ΄λ°μμΌλ‘ μ μΈν λ v3λ₯Ό μ΄κΈ°ν ν μ μμ
func2(*args)
μμΉ μΈμ λͺ¨μΌκΈ°λΌκ³ ν¨
λ§€κ°λ³μμ κ°μλ₯Ό μ§μ νμ§ μκ³ μ λ¬νλ λ°©μ
*argsννλ‘ μ λ¬λ λ§€κ°λ³μλ νν νμμΌλ‘ μ λ¬.- μ ν΄μ§μ§ μμ λ€μμ λ§€κ°λ³μλ₯Ό νν νμμΌλ‘ λ°μ μ μμ
func3(**kwargs)
ν€μλ μΈμ λͺ¨μΌκΈ°λΌκ³ ν¨
ν¨μ νΈμΆμ ν λ λμ
λ리 νμμΌλ‘ λ§€κ°λ³μλ₯Ό μ λ¬ν¨
- key-value ννλ‘ μ¬μ©