Python : Function

m_ngyeongΒ·2024λ…„ 10μ›” 12일
0

Python

λͺ©λ‘ 보기
13/17
post-thumbnail

🐍 Python


ν•¨μˆ˜(Function)

ν•¨μˆ˜(Function)λŠ” νŠΉμ • μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” μ½”λ“œ 블둝을 μ˜λ―Έν•œλ‹€. ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±μ„ 높이고, 논리적 ꡬ쑰λ₯Ό λ§Œλ“€μ–΄ ν”„λ‘œκ·Έλž¨μ„ 더 효율적이고 가독성 있게 μž‘μ„±ν•  수 μžˆλ‹€.

ν•¨μˆ˜μ˜ μ£Όμš” λͺ©μ 

  • μ½”λ“œ μž¬μ‚¬μš©: λ™μΌν•œ μ½”λ“œκ°€ μ—¬λŸ¬ κ³³μ—μ„œ 반볡될 λ•Œ, ν•œ 번 μ •μ˜λœ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ μ€‘λ³΅λœ μ½”λ“œλ₯Ό 쀄일 수 있음.
  • λͺ¨λ“ˆν™” : μ½”λ“œλ₯Ό 논리적인 λ‹¨μœ„λ‘œ λ‚˜λˆ„μ–΄ 관리할 수 있음. 즉, λ³΅μž‘ν•œ 문제λ₯Ό μž‘μ€ λ‹¨μœ„λ‘œ λΆ„λ¦¬ν•˜μ—¬ ν•΄κ²°ν•˜κ³ , 각 λ‹¨μœ„μ— λŒ€ν•΄ ν•¨μˆ˜λ₯Ό μž‘μ„±ν•˜λ©΄ ν”„λ‘œκ·Έλž¨μ΄ 더 μ΄ν•΄ν•˜κΈ° μ‰¬μ›Œμ§.
  • 가독성 ν–₯상: ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ μ½”λ“œμ˜ 흐름이 λͺ…ν™•ν•΄μ§€κ³ , μ½”λ“œμ˜ λͺ©μ μ΄ 더 λΆ„λͺ…ν•˜κ²Œ λ“œλŸ¬λ‚¨.
  • μœ μ§€λ³΄μˆ˜ μš©μ΄μ„±: ν•¨μˆ˜ λ‹¨μœ„λ‘œ μ½”λ“œλ₯Ό μˆ˜μ •ν•˜λ©΄ 전체 μ½”λ“œμ˜ λ‹€λ₯Έ 뢀뢄에 λ―ΈμΉ˜λŠ” 영ν–₯이 적음.

ν•¨μˆ˜μ˜ κΈ°λ³Έ ꡬ쑰

νŒŒμ΄μ¬μ—μ„œ ν•¨μˆ˜λŠ” def ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ •μ˜ν•˜λ©°, λ‹€μŒκ³Ό 같은 기본적인 ν˜•μ‹μ„ λ”°λ₯Έλ‹€.

ν•¨μˆ˜ μ •μ˜ 문법

# ν•¨μˆ˜ μ •μ˜
def ν•¨μˆ˜μ΄λ¦„(λ§€κ°œλ³€μˆ˜1, λ§€κ°œλ³€μˆ˜2, ...):
    μˆ˜ν–‰ν•  μ½”λ“œ1
    μˆ˜ν–‰ν•  μ½”λ“œ2
    ...
    return λ°˜ν™˜κ°’
    
# ν•¨μˆ˜ 호좜
ν•¨μˆ˜μ΄λ¦„()
  • def: ν•¨μˆ˜λ₯Ό μ •μ˜ν•  λ•Œ μ‚¬μš©ν•˜λŠ” ν‚€μ›Œλ“œ.
  • ν•¨μˆ˜ 이름: ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ μ‚¬μš©ν•  이름.
  • λ§€κ°œλ³€μˆ˜(νŒŒλΌλ―Έν„°): ν•¨μˆ˜κ°€ μž…λ ₯λ°›λŠ” κ°’μœΌλ‘œ, ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•  λ³€μˆ˜λ₯Ό μ •μ˜.
  • μˆ˜ν–‰ν•  μ½”λ“œ: ν•¨μˆ˜κ°€ ν˜ΈμΆœλ˜μ—ˆμ„ λ•Œ μ‹€ν–‰ν•  μ½”λ“œλ₯Ό μž‘μ„±.
  • return: ν•¨μˆ˜μ˜ κ²°κ³Όλ₯Ό λ°˜ν™˜ν•  λ•Œ μ‚¬μš©. (λ°˜ν™˜κ°’μ΄ μ—†μœΌλ©΄ μƒλž΅ κ°€λŠ₯)

ν•¨μˆ˜μ˜ λ™μž‘ κ³Όμ •

  1. ν•¨μˆ˜ μ •μ˜
  2. ν•¨μˆ˜ 호좜: ν•„μš”ν•œ μ‹œμ μ—μ„œ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ μ •μ˜λœ μž‘μ—…μ„ μˆ˜ν–‰ν•˜κ²Œ 함.
  3. λ§€κ°œλ³€μˆ˜ 전달: ν•¨μˆ˜ 호좜 μ‹œ μž…λ ₯κ°’(인자)을 μ „λ‹¬ν•˜λ©΄, ν•¨μˆ˜ λ‚΄μ—μ„œ λ§€κ°œλ³€μˆ˜λ‘œ λ°›μ•„ 처리.
  4. κ²°κ³Ό λ°˜ν™˜: return ν‚€μ›Œλ“œλ₯Ό 톡해 κ²°κ³Όλ₯Ό λ°˜ν™˜ν•˜κ±°λ‚˜, λ°˜ν™˜ν•˜μ§€ μ•Šμ„ μˆ˜λ„ 있음.

κΈ°λ³Έ ν•¨μˆ˜ μ˜ˆμ‹œ

μ˜ˆμ‹œ 1: κ°„λ‹¨ν•œ ν•¨μˆ˜

def greet():
    print("Hello, World!")

greet()  # 좜λ ₯: Hello, World!
  • greet() ν•¨μˆ˜λŠ” 인자λ₯Ό λ°›μ§€ μ•Šκ³ , 호좜되면 "Hello, World!"λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜λŠ” κ°„λ‹¨ν•œ ν•¨μˆ˜.

μ˜ˆμ‹œ 2: λ§€κ°œλ³€μˆ˜κ°€ μžˆλŠ” ν•¨μˆ˜

def greet_person(name):
    print(f"Hello, {name}!")

greet_person("Alice")  # 좜λ ₯: Hello, Alice!
greet_person("Bob")    # 좜λ ₯: Hello, Bob!
  • greet_person(name) ν•¨μˆ˜λŠ” λ§€κ°œλ³€μˆ˜ name을 λ°›μ•„, κ·Έ 값을 μ‚¬μš©ν•˜μ—¬ 인사 λ©”μ‹œμ§€λ₯Ό 좜λ ₯.

μ˜ˆμ‹œ 3: λ°˜ν™˜κ°’μ΄ μžˆλŠ” ν•¨μˆ˜

def add(a, b):
    return a + b

result = add(3, 4)
print(result)  # 좜λ ₯: 7
  • add(a, b) ν•¨μˆ˜λŠ” 두 개의 인자λ₯Ό λ”ν•œ κ²°κ³Όλ₯Ό return ν‚€μ›Œλ“œλ₯Ό 톡해 λ°˜ν™˜ν•¨.
    ν•¨μˆ˜ 호좜 κ²°κ³ΌλŠ” result λ³€μˆ˜μ— μ €μž₯됨.

ν•¨μˆ˜μ˜ λ‹€μ–‘ν•œ μš”μ†Œ

λ§€κ°œλ³€μˆ˜μ™€ 인자

  • λ§€κ°œλ³€μˆ˜(νŒŒλΌλ―Έν„°, Parameter): ν•¨μˆ˜λ₯Ό μ •μ˜ν•  λ•Œ μ“°μ΄λŠ” λ³€μˆ˜
  • 인자(argument): ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ μ „λ‹¬λ˜λŠ” μ‹€μ œ κ°’
def multiply(x, y):  # x, yλŠ” λ§€κ°œλ³€μˆ˜
    return x * y

multiply(2, 3)  # 2와 3은 인자

기본값이 μžˆλŠ” λ§€κ°œλ³€μˆ˜

λ§€κ°œλ³€μˆ˜μ— 기본값을 μ„€μ •ν•˜μ—¬, ν•¨μˆ˜ 호좜 μ‹œ ν•΄λ‹Ή 인자λ₯Ό μƒλž΅ν•˜λ©΄ 기본값이 μ‚¬μš©λ˜λ„λ‘ ν•  수 μžˆλ‹€.

def greet(name, greeting="Hello"):
    print(f"{greeting}, {name}!")

greet("Alice")         # 좜λ ₯: Hello, Alice!
greet("Bob", "Hi")     # 좜λ ₯: Hi, Bob!

κ°€λ³€ 인자

κ°€λ³€ μΈμžλŠ” μ •ν•΄μ§„ 개수 μ΄μƒμ˜ 인자λ₯Ό 받을 λ•Œ μ‚¬μš©λœλ‹€. *args와 **kwargsλ₯Ό μ‚¬μš©ν•΄ ν•¨μˆ˜μ— μž„μ˜μ˜ 개수의 인자λ₯Ό 전달할 수 μžˆλ‹€.

  • *args : νŠœν”Œ ν˜•νƒœλ‘œ μ—¬λŸ¬ 인자λ₯Ό 받을 수 있음.
  • **kwargs : ν‚€μ›Œλ“œ μΈμžλ“€μ„ λ”•μ…”λ„ˆλ¦¬ ν˜•νƒœλ‘œ 받을 수 있음.
# *args μ‚¬μš© μ˜ˆμ‹œ
def add_all(*args):
    return sum(args)

print(add_all(1, 2, 3))  # 좜λ ₯: 6
print(add_all(5, 10))    # 좜λ ₯: 15


# **kwargs μ‚¬μš© μ˜ˆμ‹œ
def greet_people(**kwargs):
    for name, greeting in kwargs.items():
        print(f"{greeting}, {name}!")

greet_people(Alice="Hi", Bob="Hello", Charlie="Hey")
# 좜λ ₯:
# Hi, Alice!
# Hello, Bob!
# Hey, Charlie!

ν•¨μˆ˜μ˜ λ°˜ν™˜ κ°’

πŸ”˜ 단일 κ°’ λ°˜ν™˜

ν•¨μˆ˜λŠ” 연산을 μˆ˜ν–‰ν•œ κ²°κ³Όλ₯Ό return ν‚€μ›Œλ“œλ‘œ λ°˜ν™˜ν•  수 μžˆλ‹€.

def add(a, b):
    return a + b  # 합을 λ°˜ν™˜

result = add(3, 4)  # λ°˜ν™˜λœ 값을 λ³€μˆ˜μ— μ €μž₯
print(result)  # 7
  • add(a, b) ν•¨μˆ˜λŠ” 두 개의 인자λ₯Ό λ”ν•œ κ²°κ³Όλ₯Ό return ν‚€μ›Œλ“œλ₯Ό 톡해 λ°˜ν™˜ν•¨.
    ν•¨μˆ˜ 호좜 κ²°κ³ΌλŠ” result λ³€μˆ˜μ— μ €μž₯됨.

πŸ”˜ None λ°˜ν™˜

파이썬 ν•¨μˆ˜λŠ” λͺ…μ‹œμ μœΌλ‘œ return문을 μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ©΄ μžλ™μœΌλ‘œ None을 λ°˜ν™˜ν•œλ‹€.

def add(a, b):  
    print("%d, %d의 합은 %dμž…λ‹ˆλ‹€." % (a, b, a+b))  # 3, 4의 합은 7μž…λ‹ˆλ‹€.
print(add(3, 4))  # None
  • add() ν•¨μˆ˜λŠ” return 문이 μ—†κΈ° λ•Œλ¬Έμ—, ν•¨μˆ˜κ°€ 호좜된 ν›„ 아무 값도 λ°˜ν™˜ν•˜μ§€ μ•Šκ³ , 기본적으둜 None을 λ°˜ν™˜.
  • add(3, 4) ν•¨μˆ˜κ°€ 호좜되면 λ‚΄λΆ€μ μœΌλ‘œ print()λ₯Ό 톡해 "3, 4의 합은 7μž…λ‹ˆλ‹€."κ°€ 좜λ ₯λ˜μ§€λ§Œ, κ·Έ ν›„ ν•¨μˆ˜λŠ” None을 λ°˜ν™˜ν•˜μ—¬ print(add(3, 4))의 κ²°κ³ΌλŠ” None이 됨.

πŸ”˜ μ—¬λŸ¬ 값을 λ°˜ν™˜

ν•¨μˆ˜λŠ” 연산을 μˆ˜ν–‰ν•œ κ²°κ³Όλ₯Ό return ν‚€μ›Œλ“œλ‘œ μ—¬λŸ¬ 값을 λ°˜ν™˜ν•  μˆ˜λ„ μžˆλ‹€.

def get_person_info():
    name = "Alice"
    age = 25
    return name, age  # μ—¬λŸ¬ κ°’ λ°˜ν™˜

name, age = get_person_info()
print(name)  # 좜λ ₯: Alice
print(age)   # 좜λ ₯: 25


profile
ΚšΘ‰Ιž

0개의 λŒ“κΈ€