더보기
- 함수 정의와 호출
함수를 정의하고 호출하는 기본 구조
함수 호출 시 매개변수 전달 방식 - 매개변수의 사용
매개변수가 없는 함수
매개변수가 있는 함수
기본값이 있는 매개변수
기본값이 없는 매개변수 - 가변 인자
*args
**kwargs - 특수 매개변수와 타입 힌트
매개변수와 반환값에 타입 힌트를 추가하는 방법
슬래시(/)와 별표(*)로 매개변수의 동작을 제한하는 방법 - 반환값의 유무 (예시코드 따로 없음)
결괏값을 반환하는 함수와 반환하지 않는 함수의 차이
함수 정의와 호출
def hi(): #함수 정의는 def 키워드로 시작
print('hi')
print('안녕')
print('나 혼자 있고싶으니까 가세여')
hi() #함수명으로 함수를 호출하여, 함수 내부의 코드를 실행
함수의 기본 구조
정의 def 함수명(매개변수):
호출 함수명(인자)
매개변수가 있는 함수
def hello(name): #함수에 매개변수를 전달하여 동적으로 동작을 변경
print(f'hi {name}')
#호출 시 각기 다른 값을 전달 가능
hello('won')
hello('im')
기본값이 있는 매개변수
def hello(name, age=None): #매개변수에 기본값을 설정하면, 인자를 생략 가능(None은 기본값으로 자주 사용되며, 값이 없는 상태를 나타냄)
print(f'hi {name} age is {age}')
hello('won')
결과값을 반환하는 함수
def plus_x_y(x, y):
if x == 10:
return True #return을 사용해 함수 실행 결과를 호출자에게 반환
else:
return False
#반환값을 변수에 저장하거나 바로 사용할 수 있음
a = plus_x_y(4, 44)
print(a)
가변 인자(가변 매개변수)
*args
def get_number(*args): # *args: 임의 개수의 인자를 튜플로 전달받음
for i, v in enumerate(args):
print(f'result {i} {v}')
get_number('im', 'kim', 'lee')
**kwargs
def get_info(**kwargs): # **kwargs: 임의 개수의 키워드 인자를 딕셔너리로 전달받음
for k, v in kwargs.items():
print(k, v)
get_info(name='im', age=30)
가변 매개변수의 응용
def mixed_function(a, b, *args, c=10, **kwargs):
print(f"a: {a}, b: {b}, args: {args}, c: {c}, kwargs: {kwargs}")
mixed_function(1, 2, 3, 4, 5, c=20, d=30, e=40)
#a: 1, b: 2, args: (3, 4, 5), c: 20, kwargs: {'d': 30, 'e': 40}
*args와 **kwargs를 조합해 함수 설계
타입 힌트
매개변수와 반환값의 타입 힌트 작성법
#정적 분석 도구나 IDE에서 코드 작성 시 도움을 받을 수 있음
def hint(word: str, num: int) -> int: #매개변수와 반환값의 타입을 힌트로 제공하여 코드 가독성 높임
return len(word) + num
특수 매개변수 제한
함수 매개변수의 사용 방법을 명확히 제어하기 위해 도입된 문법
매개변수 규칙
슬래시(/)
슬래시 앞의 매개변수(a, b)는 **위치 인자(positional-only)**로만 사용할 수 있음
키워드 인자로 전달하려고 하면 오류 발생
별표(*)
별표 뒤의 매개변수(d)는 **키워드 인자(keyword-only)**로만 사용할 수 있음
위치 인자로 전달하려고 하면 오류 발생
#슬래시(/)와 별표(*)를 사용한 매개변수 제한
def func(a, b, /, c, *, d):
print(a, b, c, d)
func(1, 2, c=3, d=4)
a, b : 위치 인자로 전달
c : 키워드 또는 위치 인자로 전달
d : 키워드 인자로 전달
def create_user(name, age, /, *, is_admin=False):
print(f"Name: {name}, Age: {age}, Admin: {is_admin}")
# 호출
create_user("수빈이", 499, is_admin=True) # 정상
create_user(name="모르겠고", age=25, is_admin=False) # 오류 발생
- 슬래시(/)와 별표(*)는 매개변수 사용 방식을 제한하여 함수 호출을 더 명확하고 의도적으로 만듦
- 슬래시(/) 앞: 위치 인자만 가능
- 별표(*) 뒤: 키워드 인자만 가능
- 이를 활용하면 API 설계나 함수 호출 방식을 통제할 수 있어, 코드 가독성과 유지보수성이 향상
함수는 코드를 구조화하고 재사용성을 높이는 핵심 도구
'Python to AI' 카테고리의 다른 글
Python - 객체 탐색과 속성 관리 (4) | 2024.12.15 |
---|---|
Python - Pandas(데이터 전처리: Encoding, Embedding) (4) | 2024.12.13 |
Python - Pandas, Scikit-learn, SciPy(데이터 전처리 : 데이터 정규화와 표준화) (4) | 2024.12.11 |
Python - Pandas(데이터 전처리 : 이상치 탐지 및 처리) (10) | 2024.12.10 |
Python - Matplotlib 한글폰트 커스텀컨피그 (2) | 2024.12.10 |