함수(function)
- 정의 ; 문장(코드)의 집합
- 0개 이상의 매개변수가 함수에 전달될수 있다
# 함수 기본 구조
def 함수명(매개변수1, 매개변수2, ...):
문장
# ex
print()
- 함수 호출 시, 함수에 정의된 인자 개수보다 적거나 많은 수의 인자를 넘겨주면 예외 발생(TypeError)
def print_n(value, n): # 2개의 매개변수
for i in range(n):
print(value)
print_n("hi") # 1개의 매개변수만 넘겨주면 TypeError!
1. 가변 매개변수 함수
- 정의 ; 매개변수를 원하는 만큼 받을 수 있는 함수
- 제약
- 가변 매개변수 뒤에 일반 매개변수가 올 수 없다
- 가변 매개변수는 하나만 사용 가능
# 가변 매개변수 함수 기본 구조
def 함수명(매개변수1, 매개변수2, ..., *가변 매개변수):
문장
2. 기본 매개변수
- 정의 ; 매개변수를 입력하지 않았을 경우, 기본값이 세팅되는 매개변수
- 형태 ; 매개변수=값
- 제약
- 기본 매개변수 뒤에 일반 매개변수가 올 수 없다
# 기본 매개변수 예
# 아래에서 sep=' '부터 flush=False까지
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
- 주의
- 기본 매개변수가 가변 매개변수 앞에 올 때, 기본 매개변수의 의미가 사라진다
- 기본 매개변수가 가변 매개변수 뒤에 올 때, 가변 매개변수가 우선된다
# 기본 매개변수가 가변 매개변수보다 앞에 오는 경우
def print_number(n=2, *values):
for _ in range(n):
for value in values:
print(value)
print()
# 아래와 같이 호출하는 경우, 에러 발생(TypeError)
# 매개변수가 순서대로 입력되므로, n에는 "how", values에는 ["are", "you"]가 들어간다
# range() 함수는 숫자만 입력받을 수 있으므로, "how"가 입력되면 TypeError 발생
# 따라서, 어떤 값을 입력하지 않아도 n=2로 입력되길 기대할 수 없기에
# 기본 매개변수가 가변 매개변수보다 앞에 오는 경우는 의미가 없다
print_number("how", "are", "you")
# 기본 매개변수가 가변 매개변수보다 뒤에 오는 경우
def print_number(*values, n=2):
for _ in range(n):
for value in values:
print(value)
print()
print_number("how", "are", "you", 3)
# 함수 실행 결과는 다음과 같다
# how
# are
# you
# 3
# how
# are
# you
# 3
3. 키워드 매개변수
- 정의 ; 이름을 직접 지정해서 값을 입력하는 매개변수
# 키워드 매개변수 예
def print_number(*values, n=2):
for i in range(n):
for value in values:
print(value)
print()
pirnt_number("hi", "everyone", n=3) # n=3 부분이 키워드 매개변수!
# 함수 실행 결과는 다음과 같다
# hi
# everyone
# hi
# everyone
# hi
# everyone
4. 함수의 여러 호출 형태
- 일반 매개변수는 반드시 입력해야 하고, 순서에 맞게 입력한다
- 아래의 1번, 4번
- 일반 매개변수는 키워드 매개변수처럼 사용할 수 있다
- 아래의 2번, 3번
- 키워드 매개변수 입력 시, 순서를 바꿔 입력할 수 있다
- 아래의 3번
- 키워드 매개변수는 선택적으로 입력할 수 있다
- 아래의 4번
def sum_abc(a, b=10, c=100):
print(a + b + c)
# 1. 기본 형태
sum_abc(10, 20, 30)
# 2. 모든 매개변수를 키워드 매개변수로 지정한 형태
sum_abc(a=10, b=100, c=200)
# 3. 모든 매개변수를 키워드 매개변수로 순서를 바꿔 지정한 형태
sum_abc(c=10, a=100, b=200)
# 4. 일부 매개변수만 키워드 매개변수로 지정한 형태
sum_abc(10, c=200)
# 함수 실행 결과는 다음과 같다
# 1번의 결과
# 60
# 2번의 결과
# 310
# 3번의 결과
# 310
# 4번의 결과
# 220
5. 리턴
- 정의 ; 함수를 끝내고 호출했던 위치로 돌아가도록 하는 키워드
- 리턴값 ; 함수의 실행 결과값
# 1. 리턴의 위치
def test1():
print("A")
return
print("B")
test1()
# 함수 실행 결과는 다음과 같다
# B를 출력하기 전에 함수를 끝내므로 A만 출력된다
# A
# 2. 리턴값 지정
def test2():
return 13
value = test2()
print(value)
# 함수 실행 결과는 다음과 같다
# 13
# 3. 리턴값 미지정
def test3():
return
value = test3()
print(value)
# 함수 실행 결과는 다음과 같다
# None
참고 서적
반응형
'Python' 카테고리의 다른 글
깊은 복사와 얕은 복사, [:]에 대해 (0) | 2024.03.10 |
---|