Created at : 2024-09-02 13:07
Auther: Soo.Y
5. ν¨μ (Functions)
ν¨μλ μ½λμ μ¬μ¬μ©μ±μ λμ΄κ³ , νλ‘κ·Έλ¨μ λ ꡬ쑰μ μ΄κ³ μ΄ν΄νκΈ° μ½κ² λ§λ€μ΄μ£Όλ μ€μν λꡬμ λλ€. νμ΄μ¬μμ ν¨μλ νλ μ΄μμ λͺ λ Ήλ¬Έμ κ·Έλ£Ήννμ¬ μ΄λ¦μ λΆμΈ ν νμν λ νΈμΆν μ μλλ‘ λ§λ μ½λ λΈλ‘μ λλ€. μ΄ μΉμ μμλ νμ΄μ¬ ν¨μμ μ μ, νΈμΆ, λ§€κ°λ³μ, λ°ν κ°, κΈ°λ³Έ λ§€κ°λ³μ, κ°λ³ λ§€κ°λ³μ, λλ€ ν¨μ, κ·Έλ¦¬κ³ ν¨μμ μ€μ½νμ λν΄ μ€λͺ ν©λλ€.
5.1 ν¨μ μ μμ νΈμΆ
νμ΄μ¬μμ ν¨μλ def
ν€μλλ₯Ό μ¬μ©νμ¬ μ μν©λλ€. ν¨μλ νμν λ νΈμΆν μ μμΌλ©°, νΈμΆ μμ ν¨μ λ΄λΆμ μ½λκ° μ€νλ©λλ€.
- ν¨μ μ μ:
def ν¨μμ΄λ¦(λ§€κ°λ³μ1, λ§€κ°λ³μ2):
μ€νν μ½λ
return λ°νκ°
- μμ :
def greet(name):
return f"μλ
νμΈμ, {name}λ!"
# ν¨μ νΈμΆ
message = greet("νκΈΈλ")
print(message) # μΆλ ₯: μλ
νμΈμ, νκΈΈλλ!
μμ μμ μμ greet
ν¨μλ μ΄λ¦μ λ§€κ°λ³μλ‘ λ°μ μΈμ¬ λ©μμ§λ₯Ό λ°νν©λλ€.
5.2 λ§€κ°λ³μμ μΈμ
ν¨μλ μ λ ₯μ λ°μ μ μλ λ§€κ°λ³μλ₯Ό μ μν μ μμ΅λλ€. ν¨μλ₯Ό νΈμΆν λλ μ΄λ¬ν λ§€κ°λ³μμ κ°μ μ λ¬νλλ°, μ΄λ₯Ό μΈμλΌκ³ ν©λλ€.
- μμΉ μΈμ: μμΉ μΈμλ ν¨μ μ μμμ λ§€κ°λ³μμ μμμ λ°λΌ κ°μ μ λ¬νλ λ°©μμ λλ€.
def add(a, b):
return a + b
result = add(3, 5)
print(result) # μΆλ ₯: 8
- ν€μλ μΈμ: ν€μλ μΈμλ μΈμμ μ΄λ¦μ λͺ μνμ¬ κ°μ μ λ¬νλ λ°©μμΌλ‘, μΈμμ μμλ₯Ό λ°κΎΈμ΄λ μ¬λ°λ₯΄κ² κ°μ μ λ¬ν μ μμ΅λλ€.
result = add(b=5, a=3)
print(result) # μΆλ ₯: 8
- κΈ°λ³Έκ° λ§€κ°λ³μ: λ§€κ°λ³μμ κΈ°λ³Έκ°μ μ€μ νλ©΄, ν¨μ νΈμΆ μ ν΄λΉ μΈμλ₯Ό μλ΅ν μ μμ΅λλ€. μλ΅λ κ²½μ° κΈ°λ³Έκ°μ΄ μ¬μ©λ©λλ€.
def greet(name, message="μλ
νμΈμ"):
return f"{message}, {name}λ!"
print(greet("νκΈΈλ")) # μΆλ ₯: μλ
νμΈμ, νκΈΈλλ!
print(greet("νκΈΈλ", "μ’μ μμΉ¨μ
λλ€")) # μΆλ ₯: μ’μ μμΉ¨μ
λλ€, νκΈΈλλ!
5.3 λ°ν κ° (Return Value)
ν¨μλ return
ν€μλλ₯Ό μ¬μ©νμ¬ κ°μ λ°νν μ μμ΅λλ€. λ°ν κ°μ ν¨μ νΈμΆμ κ²°κ³Όλ‘ μ 곡λλ©°, νΈμΆν κ³³μμ μ¬μ©ν μ μμ΅λλ€.
- λ°ν κ°μ΄ μλ ν¨μ:
def multiply(a, b):
return a * b
result = multiply(3, 4)
print(result) # μΆλ ₯: 12
- λ°ν κ°μ΄ μλ ν¨μ:
ν¨μμμ
return
λ¬Έμ μλ΅νλ©΄ κΈ°λ³Έμ μΌλ‘None
μ λ°νν©λλ€.
def print_message():
print("μ΄ λ©μμ§λ μΆλ ₯λ©λλ€.")
result = print_message()
print(result) # μΆλ ₯: None
5.4 κ°λ³ λ§€κ°λ³μ (Variable-length Arguments)
ν¨μλ κ°λ³ λ§€κ°λ³μλ₯Ό λ°μλ€μΌ μ μμΌλ©°, μ΄λ₯Ό ν΅ν΄ νΈμΆ μ μ λ¬λλ μΈμμ κ°μμ κ΄κ³μμ΄ μ²λ¦¬ν μ μμ΅λλ€.
*args
: μμΉ μΈμμ κ°λ³ λ§€κ°λ³μ:*args
λ ν¨μκ° μμμ κ°μμ μμΉ μΈμλ₯Ό λ°μ μ μλλ‘ ν©λλ€.
def sum_all(*args):
return sum(args)
print(sum_all(1, 2, 3)) # μΆλ ₯: 6
print(sum_all(4, 5, 6, 7, 8)) # μΆλ ₯: 30
**kwargs
: ν€μλ μΈμμ κ°λ³ λ§€κ°λ³μ:**kwargs
λ ν¨μκ° μμμ κ°μμ ν€μλ μΈμλ₯Ό λ°μ μ μλλ‘ ν©λλ€.
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="νκΈΈλ", age=30, city="μμΈ")
μ΄ μμ λ print_info
ν¨μκ° μ λ¬λ ν€μλ μΈμλ€μ μΆλ ₯νλλ‘ ν©λλ€.
5.5 λλ€ ν¨μ (Lambda Functions)
λλ€ ν¨μλ λ¨μΌ λ¬Έμ₯μΌλ‘ μ΄λ£¨μ΄μ§ μ΅λͺ
ν¨μλ‘, lambda
ν€μλλ₯Ό μ¬μ©νμ¬ μ μν©λλ€. λλ€ ν¨μλ κ°λ¨ν ν¨μλ₯Ό μ μν λ μ μ©νκ² μ¬μ©ν μ μμ΅λλ€.
- 기본 ꡬ쑰:
lambda λ§€κ°λ³μλ€: ννμ
- μμ :
add = lambda a, b: a + b
print(add(3, 4)) # μΆλ ₯: 7
- λλ€ ν¨μμ νμ©:
λλ€ ν¨μλ μ’
μ’
map
,filter
,sorted
λ±μ ν¨μμμ μ¬μ©λ©λλ€.
numbers = [1, 2, 3, 4, 5]
squares = list(map(lambda x: x**2, numbers))
print(squares) # μΆλ ₯: [1, 4, 9, 16, 25]
5.6 ν¨μ μ€μ½νμ λ€μμ€νμ΄μ€ (Scope and Namespace)
ν¨μ μ€μ½νλ ν¨μ λ΄μμ μ μλ λ³μλ€μ μ ν¨ λ²μλ₯Ό κ²°μ ν©λλ€. νμ΄μ¬μ ν¨μ μ€μ½νλ₯Ό ν΅ν΄ λ³μμ μ ν¨ λ²μλ₯Ό κ΄λ¦¬ν©λλ€.
- μ§μ λ³μ (Local Variables): ν¨μ λ΄μμ μ μλ λ³μλ μ§μ λ³μμ΄λ©°, ν¨μ λ΄λΆμμλ§ μ κ·Όν μ μμ΅λλ€.
def greet():
name = "νκΈΈλ" # μ§μ λ³μ
print(f"μλ
νμΈμ, {name}λ!")
greet()
# print(name) # μ€λ₯ λ°μ: nameμ ν¨μ μΈλΆμμ μ κ·Ό λΆκ°
- μ μ λ³μ (Global Variables): ν¨μ μΈλΆμμ μ μλ λ³μλ μ μ λ³μμ΄λ©°, λͺ¨λ ν¨μμμ μ κ·Όν μ μμ΅λλ€.
name = "νκΈΈλ" # μ μ λ³μ
def greet():
print(f"μλ
νμΈμ, {name}λ!")
greet() # μΆλ ₯: μλ
νμΈμ, νκΈΈλλ!
global
ν€μλ: ν¨μ λ΄μμ μ μ λ³μλ₯Ό μμ νλ €λ©΄global
ν€μλλ₯Ό μ¬μ©ν΄μΌ ν©λλ€.
counter = 0
def increment():
global counter
counter += 1
increment()
print(counter) # μΆλ ₯: 1
nonlocal
ν€μλ:nonlocal
ν€μλλ μ€μ²© ν¨μ λ΄μμ μΈλΆ ν¨μμ λ³μ(μ§μ λ³μ)λ₯Ό μμ ν λ μ¬μ©λ©λλ€.
def outer_function():
x = "μΈλΆ λ³μ"
def inner_function():
nonlocal x
x = "λ΄λΆμμ μμ λ μΈλΆ λ³μ"
inner_function()
print(x)
outer_function() # μΆλ ₯: λ΄λΆμμ μμ λ μΈλΆ λ³μ
5.7 ν¨μμ λ¬Έμν (Docstring)
ν¨μλ₯Ό μ μν λ, ν¨μμ μν κ³Ό μ¬μ©λ²μ μ€λͺ νκΈ° μν΄ ν¨μ λ³Έλ¬Έμ 첫 λ²μ§Έ μ€λ‘ λ¬Έμν λ¬Έμμ΄(Docstring)μ μμ±ν μ μμ΅λλ€. μ΄λ ν¨μμ μ¬μ©λ²μ μ΄ν΄νλ λ° λμμ μ€λλ€.
- λ¬Έμν μμ :
def add(a, b):
"""
λ μλ₯Ό λν κ²°κ³Όλ₯Ό λ°νν©λλ€.
λ§€κ°λ³μ:
a (int): 첫 λ²μ§Έ μ«μ
b (int): λ λ²μ§Έ μ«μ
λ°νκ°:
int: aμ bμ ν©
"""
return a + b
print(add(2, 3)) # μΆλ ₯: 5
ν¨μμ λ¬Έμνλ help()
ν¨μλ₯Ό ν΅ν΄ νμΈν μ μμ΅λλ€.
help(add)
μ΄μ νμ΄μ¬μμ ν¨μμ κ°λ κ³Ό μ¬μ©λ²μ λν΄ μ΄ν΄νκ² λμμ΅λλ€. ν¨μλ μ½λμ μ€λ³΅μ μ€μ΄κ³ , μ μ§λ³΄μλ₯Ό μ½κ² νλ©°, νλ‘κ·Έλ¨μ λ 체κ³μ μΌλ‘ λ§λλ λ° μ€μν μν μ ν©λλ€.