python 맀κ°λ³μλ ν¨μλ λ©μλλ₯Ό νΈμΆν λ μ λ¬λλ κ°μ λ°λ λ³μλ₯Ό κ°λ¦¬ν΅λλ€. λ€λ₯Έ λ§λ‘λ "μΈμ(argument)"λ "μ λ ₯(input)"μ΄λΌκ³ ν©λλ€.ν¨μλ λ©μλλ μΌλ°μ μΌλ‘ 맀κ°λ³μλ₯Ό λ°μλ€μ΄κ³ κ·Έ κ°μ λ°λΌ μμ μ μννκ±°λ κ²°κ³Όλ₯Ό λ°νν©λλ€.
β£ λͺ©μ°¨
νμ΄μ¬μμ 맀κ°λ³μλ ν¨μλ λ©μλ μ μμ μ¬μ©λλ©°, ν΄λΉ ν¨μλ₯Ό νΈμΆν λ μ λ¬λλ κ°μ λ°μ΅λλ€. 맀κ°λ³μλ ν¨μλ λ©μλμ κ΄νΈ μμ μ μλλ©°, ν¨μλ λ©μλλ₯Ό νΈμΆν λ μ λ¬λλ κ°κ³Ό 맀μΉλ©λλ€.
μ€λμ νμ΄μ¬μμ μ£Όλ‘ μ¬μ©λλ 맀κ°λ³μμΈ κ°λ³ 맀κ°λ³μ, κΈ°λ³Έ 맀κ°λ³μ, ν€μλ 맀κ°λ³μμ λν΄ μμλ³΄κ² μ΅λλ€.
ν¬μ€ν
μ λ€μ΄κ°κΈ° μ ! ν¨μμ λν΄ λμ± μμΈν μκ³ μΆλ€λ©΄ μ§λ ν¬μ€ν
μ νμΈν΄ μ£ΌμΈμπ
1. 맀κ°λ³μπ±π
ν¨μλ μ½λμ λͺ¨μ체μ λλ€. ν¨μλ₯Ό νμ©νλ κ²μ ν¨μλ₯Ό νΈμΆνλ€κ³ ννν©λλ€. ν¨μλ₯Ό νΈμΆν λ, κ΄νΈ λ΄λΆμ μ¬λ¬ κ°μ§ μλ£λ₯Ό λ£κ² λλλ° μ΄κ²λ€μ 맀κ°λ³μλΌκ³ ν©λλ€. κ°λ¨ν μμ λ₯Ό ν΅ν΄ 맀κ°λ³μλ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€.
# ν¨μ μ μ
def greet(name):
'''μ£Όμ΄μ§ μ΄λ¦μ λν μΈμ¬λ₯Ό μΆλ ₯νλ ν¨μ'''
print(f'Hello, {name}!')
# ν¨μ νΈμΆ
greet('Alice')
μ μμ μμ 'greet'λΌλ ν¨μλ 'name'μ΄λΌλ 맀κ°λ³μλ₯Ό κ°μ§κ³ μμ΅λλ€. μ΄ ν¨μλ₯Ό νΈμΆν λ 'Alice'λΌλ κ°μ 맀κ°λ³μλ‘ μ λ¬νλ©΄, ν¨μλ 'Hello, Alice!'λ₯Ό μΆλ ₯ν©λλ€. ν¨μλ₯Ό νΈμΆν λ 맀κ°λ³μλ₯Ό λ°κΎΈλ©΄ λ€λ₯Έ κ²°κ³Όκ° λμ΅λλ€.
νμ΄μ¬ ν¨μλ 맀κ°λ³μλ₯Ό μ¬λ¬κ° μ¬μ©ν μ λ μμ΅λλ€. μ΄λ²μλ 맀κ°λ³μλ₯Ό μ¬λ¬κ° λ£μ μμ λ₯Ό νμΈν΄ λ³΄κ² μ΅λλ€.
def calculate(a, b, c):
"""μΈ κ°μ 맀κ°λ³μλ₯Ό λ°μ κ³μ°νλ ν¨μ"""
result = a * b + c
return result
# ν¨μ νΈμΆ
result = calculate(2, 3, 4)
print(result) # μΆλ ₯: 2 * 3 + 4 = 10
μμ μ½λμμ 'calculate' ν¨μλ μΈ κ°μ 맀κ°λ³μ 'a', 'b', 'c'λ₯Ό λ°μλ€μ¬ κ³±μ
κ³Ό λ§μ
μ°μ°μ μνν©λλ€. ν¨μλ₯Ό νΈμΆν λ μΈ κ°μ μΈμλ₯Ό μ λ¬νμ¬ κ³μ°μ μννκ³ , κ²°κ³Όλ₯Ό λ°νν©λλ€. μ¬κΈ°μλ 2 * 3 + 4 μ°μ°μ μννμ¬ κ²°κ³Όλ‘ 10μ λ°νν©λλ€.
κ·Έλ λ€λ©΄ ν¨μλ₯Ό νΈμΆν λ μ μν 맀κ°λ³μλ₯Ό μλ΅νκ±°λ μ μλ 맀κ°λ³μλ³΄λ€ λ λ§μ΄ λ£λ κ²½μ°, μ΄λ€ μΌμ΄ λ°μνλμ§ κΆκΈνμ§ μλμ?
def greet(name):
'''μ£Όμ΄μ§ μ΄λ¦μ λν μΈμ¬λ₯Ό μΆλ ₯νλ ν¨μ'''
print(f'Hello, {name}!')
def add(a, b):
'''λ μλ₯Ό λν΄μ κ²°κ³Όλ₯Ό λ°ννλ ν¨μ'''
return a + b
# ν¨μ νΈμΆ
greet() # 맀κ°λ³μλ₯Ό μλ΅νμ¬ νΈμΆ
result = add(3, 5, 2) # μ μλ 맀κ°λ³μλ³΄λ€ λ λ§μ 맀κ°λ³μλ₯Ό λ£μ΄ νΈμΆ
β οΈ Errorβ οΈTypeError: greet() missing 1 required positional ;argument: 'name'
(νμ μλ¬ : Greeting()μ νμ μμΉ μΈμ 1κ°κ° λλ½λμμ΅λλ€: 'name' )
β οΈ Errorβ οΈ TypeError: add() takes 2 positional arguments but 3 were given
(νμ μλ¬ : add()λ 2κ°μ μμΉ μΈμλ₯Ό μ·¨νμ§λ§ 3κ°κ° μ£Όμ΄μ‘μ΅λλ€. )
맀κ°λ³μλ₯Ό μνλ λ§νΌ λ°κ³ μΆλ€λ©΄ ν¨μλ₯Ό μ μΈν λμ νΈμΆν λμ 맀κ°λ³μμ κ°μκ° μΌμΉν΄μΌ ν©λλ€.
μ΄λ₯Ό νΌνκΈ° μν΄μλ κ°λ³ 맀κ°λ³μλ₯Ό μ¬μ©ν μ μμ΅λλ€.
κ°λ³ 맀κ°λ³μλ ν¨μλ₯Ό μ μν λ μ νν κ°μλ₯Ό 미리 μ§μ νμ§ μκ³ νμν λ§νΌμ 맀κ°λ³μλ₯Ό λ°μ μ μλλ‘ ν©λλ€.
2. κ°λ³ 맀κ°λ³μπ±π€
κ°λ³ 맀κ°λ³μλ ν¨μμ μ λ¬ν μ μλ μΈμμ μλ₯Ό μ μ°νκ² μ‘°μ ν μ μλλ‘ ν©λλ€.
κ°λ³ 맀κ°λ³μλ μλμ κ°μ ννλ‘ λ§λλλ€.
def ν¨μ μ΄λ¦ (λ§€κ° λ³μ1, λ§€κ° λ³μ2,...*κ°λ³ 맀κ°λ³μ):
μνν μ½λ
ν¨μ μ΄λ¦(νμν μΈμλ§νΌ μ λ ₯)
# ν¨μ μ μ
def add(*args):
'''μ£Όμ΄μ§ λͺ¨λ μλ₯Ό λνλ ν¨μ'''
total = 0
for num in args:
total += num
return total
# ν¨μ νΈμΆ
result = add(1, 2, 3, 4, 5)
print(result) # μΆλ ₯: 15
λ³΄ν΅ κ°λ³ 맀κ°λ³μλ ν¨μ μ μ μ *μ μ¬μ©νμ¬ νμνλ©°, μΌλ°μ μΌλ‘ *argsλ₯Ό λ§μ΄ μ¬μ©ν©λλ€.
μ΄λ₯Ό ν΅ν΄ ν¨μλ μμμ κ°μμ μΈμλ₯Ό λ°μ μ μκ³ λ§€κ°λ³μλ‘ λ°μ κ°λ€μ ννλ‘ μ²λ¦¬ν©λλ€.
μλμ μ½λμμ 'process_data' ν¨μλ 맀κ°λ³μλ₯Ό μ¬μ©νμ¬ μμμ κ°μμ μΈμλ₯Ό λ°μ΅λλ€.
μμμ μΈμλ€μ κ°λ³ 맀κ°λ³μ *argsλ‘ μ²λ¦¬λμ΄ ννλ‘ μ μ₯λ©λλ€. κ·Έλ¦¬κ³ ν¨μ λ΄λΆμμλ for λ°λ³΅λ¬Έμ μ¬μ©νμ¬ ννμ κ° μμλ₯Ό νλμ© μΆλ ₯ν©λλ€.
μλ₯Ό λ€μ΄, process_data(1, 2, 3, 'apple', 'banana')μ νΈμΆνλ©΄ μμλλ‘ 1, 2, 3, apple, bananaκ° μΆλ ₯λ©λλ€.
# ν¨μ μ μ
def process_data(*args):
'''맀κ°λ³μλ‘ λ°μ κ°λ€μ ννλ‘ μ²λ¦¬νλ ν¨μ'''
for value in args:
print(value)
# ν¨μ νΈμΆ
process_data(1, 2, 3, 'apple', 'banana')
νμ΄μ¬μμλ κ°λ³ 맀κ°λ³μλ₯Ό μ¬μ©ν λ μ£Όμμ μ νλλ§ μ¬μ©ν μ μλ€λ κ²μ
λλ€.
λν, κ°λ³ 맀κ°λ³μ λ€μλ μΌλ° 맀κ°λ³μκ° μ¬ μ μμ΅λλ€.
def add_mul(choice, *args): # ν¨μ μ μ(κ°λ³ 맀κ°λ³μλ₯Ό 맨 λ€λ‘)
if choice == 'add':
answer = 0 # ν©κ³λ₯Ό λ΄μ λ³μ μ΄κΉκ°μ 0μΌλ‘ νλ€.
for i in args: # κ°λ³λ§€κ°λ³μ argsμ κ°μλ§νΌ λ°λ³΅
answer += i # answer = answer + i
elif choice == 'mul':
answer = 1 # μ΄κΉκ°μ 1λ‘ νλ€ (κ³±νκΈ° ν λ μ΄κΉκ°μ 0μΌλ‘ νλ©΄ 0μ΄ λ¨)
for i in args:
answer *= i # answer = answer * i
return answer # κ²°κ³Όλ‘ λμ¨ answerλ₯Ό λ°ννλ€
# ν¨μ νΈμΆ
a = add_mul('add', 1, 2, 3)
print(a) # μΆλ ₯ : 1+2+3
b = add_mul('mul', 4, 5, 6, 7)
print(b) # μΆλ ₯ : 4*5*6*7
ν¨μ 'add_mul'μ 첫 λ²μ§Έ 맀κ°λ³μ 'choice'λ‘ μ νμ§λ₯Ό λ°κ³ , μ΄νμλ κ°λ³ 맀κ°λ³μ *argsλ₯Ό μ¬μ©νμ¬ μμμ κ°μμ μ«μλ₯Ό λ°μ΅λλ€.
μ νμ§κ° 'add'μΈ κ²½μ°μλ λ°μ μ«μλ€μ λͺ¨λ λνμ¬ λ°ννκ³ , 'mul'μΈ κ²½μ°μλ λ°μ μ«μλ€μ λͺ¨λ κ³±νμ¬ λ°νν©λλ€.
μλ₯Ό λ€μ΄, add_mul('add', 1, 2, 3)μ νΈμΆνλ©΄ 1 + 2 + 3 = 6μ λ°ννκ³ , add_mul('mul', 4, 5, 6, 7)μ νΈμΆνλ©΄ 4 * 5 * 6 * 7 = 840μ λ°νν©λλ€.
3. κΈ°λ³Έ 맀κ°λ³μπ±π
κΈ°λ³Έ 맀κ°λ³μλ ν¨μλ₯Ό μ μν λ κΈ°λ³Έκ°μ μ€μ νλ 맀κ°λ³μλ₯Ό λ§ν©λλ€.
μΈμκ° μ λ¬λμ§ μμΌλ©΄ μ΄ λ§€κ°λ³μμ μ€μ λ κΈ°λ³Έκ°μ΄ μ¬μ©λ©λλ€.
μ΄λ μ½λλ₯Ό λ κ°κ²°νκ² λ§λ€μ΄μ£Όκ³ , ν¨μ νΈμΆ μ μΌλΆ 맀κ°λ³μλ§ μ λ¬ν μ μλλ‘ ν©λλ€.
λν νμμ λ°λΌ ν¨μ νΈμΆ μ κΈ°λ³Έκ°μ λ³κ²½νμ¬ ν¨μμ λμμ μ μ°νκ² μ‘°μ ν μ μμ΅λλ€.
κΈ°λ³Έ 맀κ°λ³μλ₯Ό μ¬μ©νλ©΄ ν¨μμ μ μ°μ±κ³Ό κ°λ μ±μ ν₯μμν€λ©°, μ½λλ₯Ό λμ± κ°κ²°νκ² μμ±ν μ μμ΅λλ€.
def greet(name, greeting='Hello'):
'''μ£Όμ΄μ§ μ΄λ¦μ λν μΈμ¬λ₯Ό μΆλ ₯νλ ν¨μ'''
print(f'{greeting}, {name}!')
# ν¨μ νΈμΆ
greet('Alice') # μΆλ ₯: Hello, Alice!
greet('Bob', 'Goodbye') # μΆλ ₯: Goodbye, Bob!
'greet' ν¨μλ 'name' 맀κ°λ³μμ κΈ°λ³Έκ°μ΄ 'Hello'μΈ 'greeting' 맀κ°λ³μλ₯Ό κ°μ§κ³ μμ΅λλ€.
ν¨μλ₯Ό νΈμΆν λ 'name' 맀κ°λ³μμλ λ°λμ κ°μ μ λ¬ν΄μΌ νμ§λ§, 'greeting' 맀κ°λ³μλ μ λ¬νμ§ μμΌλ©΄ κΈ°λ³Έκ°μΈ 'Hello'κ° μ¬μ©λ©λλ€. λ°λΌμ 'greet('Alice')' νΈμΆμ Hello, Alice! λ₯Ό μΆλ ₯νκ³ , 'greet('Bob', 'Goodbye') νΈμΆμ Goodbye, Bob! λ₯Ό μΆλ ₯ν©λλ€.
4. ν€μλ 맀κ°λ³μπ±π
ν€μλ 맀κ°λ³μλ ν¨μλ₯Ό νΈμΆν λ 맀κ°λ³μμ μ΄λ¦κ³Ό ν¨κ» κ°μ μ λ¬νλ λ°©μμ λλ€. μ΄λ₯Ό ν΅ν΄ 맀κ°λ³μμ μμμ ꡬμ λ°μ§ μκ³ μΈμλ₯Ό μ λ¬ν μ μμ΅λλ€. ν€μλ 맀κ°λ³μλ₯Ό μ¬μ©νλ©΄ ν¨μλ₯Ό νΈμΆν λ 맀κ°λ³μμ μν μ λͺ μμ μΌλ‘ μ§μ ν μ μμ΄ κ°λ μ±μ΄ λμμ§λλ€.
def greet(name, greeting='Hello'):
'μ£Όμ΄μ§ μ΄λ¦μ λν μΈμ¬λ₯Ό μΆλ ₯νλ ν¨μ'''
print(f'{greeting}, {name}!')
# ν€μλ 맀κ°λ³μλ₯Ό μ¬μ©νμ¬ ν¨μ νΈμΆ
greet(name='Alice') # μΆλ ₯: Hello, Alice!
greet(name='Bob', greeting='Hi') # μΆλ ₯: Hi, Bob!
'greet' ν¨μλ₯Ό νΈμΆν λ ν€μλ 맀κ°λ³μλ₯Ό μ¬μ©νμ¬ 'name'κ³Ό 'greeting' 맀κ°λ³μλ₯Ό μ λ¬νμμ΅λλ€. μ΄λ κ² νλ©΄ 맀κ°λ³μμ μμμ ꡬμ λ°μ§ μκ³ λͺ
μμ μΌλ‘ κ°μ μ λ¬ν μ μμ΅λλ€.
5. ν΅μ¬ λ΄μ©π