함수
- 특정한 기능을 하는 코드의 조각(묶음)
- 재사용 하기 쉬움
- 유지 및 보수가 쉬움
- 매개변수
parameter
, 반환값return
등이 존재
- 명시적인
return
값이 없는 경우, None
을 반환
- 복수의 개체를
return
하는 경우, 하나의 tuple
로 반환
Arguments
-
위치 인자(Positional Arguments)
- 기본적으로 함수를 호출할 때 위치에 따라 함수 내에 전달
- 가변 인자 리스트
*args
- 임의의 인자 개수로도 함수 호출 가능, 튜플로 묶여 처리
-
키워드 인자(Keyword Arguments)
- 직접 변수의 이름으로 특정 인자 전달
- 키워드 인자 다음에 위치 인자를 활용할 수 없음
- 가변 키워드 인자
**kwargs
- 임의의 키워드 인자 개수로 호출
- 딕셔너리 형태로 묶여 처리됨
-
Default Value : 기본값을 인자에 지정, 인자가 없어도 호출할 수 있음
- 함수를 정의할 대, 기본 인자 값을 가지는 인자 다음에 기본값이 없는 인자가 올 수 없음
def add(x, y=0):
return x + y
add(2)
Scope
- Local Scope
- 함수가 만든 스코프, 함수 내부에서만 참조
- 함수가 호출될 때 생성, 종료될 때까지 유지
- Global Scope
- 어디에서도 참조할 수 있음
- 모듈이 호출된 시점 이후 또는 인터프리터가 끝날 때까지 유지
- Built-in Scope
LEGB Rule
- 파이썬에서 사용되는 식별자들을 찾아가는 규칙
- Local scope
- Enclosed scope: 특정 함수의 상위 함수
- Global scope
- Built-in scope
global
global
을 앞에 표시하면 전역 변수임을 나타낼 수 있음
- 같은 코드 블록에서 먼저 언급되고
global
을 해당 변수에 활용할 수 없음
- 매개변수, for 루프 대상, 클래스/함수 정의 등으로 정의되지 않아야 함
- 존재하지 않는 변수도 새로 설정 가능
nonlocal
- 가장 가까운 스코프의 변수를 연결
- 같은 코드 블록에서 먼저 언급되고
global
을 해당 변수에 활용할 수 없음
- 매개변수, for 루프 대상, 클래스/함수 정의 등으로 정의되지 않아야 함
- 이미 존재하는 변수와의 연결만 가능