$ python fun_basic.py Traceback (most recent call last): File “C:\Users\82107\Desktop\Python\fun_basic.py”, line 5, in print_n_times(“Hi”, 3,2) TypeError: print_n_times() takes 2 positional arguments but 3 were given
가변 매개변수
가변 매개변수
print() 함수와 같이 매개변수를 원하는 만큼 받을 수 있는 함수
1 2
def함수 이름(매개변수, 매개변수, ... , *가변 매개변수): 문장
예제
1 2 3 4 5 6 7 8 9 10 11 12
# 가변 매개변수 defprint_n_times(n, *values): # n번을 반복 for i inrange(n): # values는 리스트처럼 활용 for value in values: print(value) # 단순한 줄바꿈 print()
# 함수를 호출 print_n_times(3, "안녕하세요", "만나서", "반갑습니다")
실행결과
1 2 3 4 5 6 7 8 9 10 11 12
$ python fun_basic.py 안녕하세요 만나서 반갑습니다
안녕하세요 만나서 반갑습니다
안녕하세요 만나서 반갑습니다
기본 매개변수
기본 매개변수
‘매개변수=값’ 형태
매개변수를 입력하지 않았을 경우 매개변수에 들어가는 기본값
기본 매개변수 뒤에는 일반 매개변수가 올 수 없음
Why? 글자가 첫 번째 매개변수에 할당되어야 하는지, 두 번째 매개변수에 할당되어야 하는지 확실하게 알 수 없다.
파이썬 프로그래밍 언어는 내부적으로 기본 매개변수 뒤에 일반 매개변수가 오지 못하게 막은 것
예제
1 2 3 4 5 6 7 8 9
# 기본 매개변수 defprint_n_times(value, n=2): # n번 반복 for i inrange(n): # value 출력 print(value)
# 함수를 호출 print_n_times("안녕하세요")
실행결과
1 2 3
$ python fun_basic.py 안녕하세요 안녕하세요
키워드 매개변수
키워드 매개변수
매개변수 이름을 지정해서 입력하는 매개변수
가변 매개변수와 기본 매개변수 둘을 같이 써보자.
기본 매개변수가 가변 매개변수보다 앞에 올 때
예제
1 2 3 4 5 6 7 8 9 10 11 12 13
# 키워드 매개변수 # 기본 매개변수가 가변 매개변수보다 앞에 올 때 defprint_n_times(n=2, *values): # n번을 반복 for i inrange(n): # values는 리스트처럼 활용 for value in values: print(value) # 단순한 줄바꿈 print()
# 함수를 호출 print_n_times("안녕하세요", "만나서", "반갑습니다")
실행 결과
1 2 3 4 5 6 7
$ python fun_basic.py Traceback (most recent call last): File "C:\Users\82107\Desktop\Python\fun_basic.py", line 49, in <module> print_n_times("안녕하세요", "만나서", "반갑습니다") File "C:\Users\82107\Desktop\Python\fun_basic.py", line 40, in print_n_times for i in range(n): TypeError: 'str' object cannot be interpreted as an integer
기본 매개변수는 가변 매개변수 앞에 써도 의미가 없다.
가변 매개변수가 기본 매개변수보다 앞에 올 때
예제
1 2 3 4 5 6 7 8 9 10 11 12 13
# 키워드 매개변수 # 가변 매개변수가 기본 매개변수보다 앞에 올 때 defprint_n_times(*values, n=2): # n번을 반복 for i inrange(n): # values는 리스트처럼 활용 for value in values: print(value) # 단순한 줄바꿈 print()
# 함수를 호출 print_n_times("안녕하세요", "만나서", "반갑습니다", 3)
실행결과
1 2 3 4 5 6 7 8 9 10
$ python fun_basic.py 안녕하세요 만나서 반갑습니다 3
안녕하세요 만나서 반갑습니다 3
키워드 매개변수
[”안녕하세요”, “만나서”, 반갑습니다”] 를 세번 출력하도록 실행
1 2 3 4 5 6 7 8 9 10 11 12 13 14
# 키워드 매개변수 # 가변 매개변수 defprint_n_times(*values, n=2): # n번을 반복 for i inrange(n): # values는 리스트처럼 활용 for value in values: print(value) # 단순한 줄바꿈 print()
# 함수를 호출 # 매개변수 이름을 직접적으로 지정 print_n_times("안녕하세요", "만나서", "반갑습니다", n=3)
실행결과
1 2 3 4 5 6 7 8 9 10 11 12
$ python fun_basic.py 안녕하세요 만나서 반갑습니다
안녕하세요 만나서 반갑습니다
안녕하세요 만나서 반갑습니다
리턴
return
함수를 실행했던 위치로 돌아가라는 뜻, 함수가 끝나는 위치를 의미
자료 없이 리턴하기
예제
1 2 3 4 5 6 7 8 9 10 11
# 리턴 # 자료 없이 리턴하기
# 함수를 정의 defreturn_test(): print("A 위치입니다") return# 리턴합니다. print("B 위치입니다")
# 함수를 호출 return_test()
실행결과
1 2
$ python fun_return.py A 위치입니다
결과적으로 “A 위치입니다” 만 출력하고 프로그램이 종료
자료와 함께 리턴하기
예제
1 2 3 4 5 6 7 8 9
# 자료와 함께 리턴하기
# 함수를 정의 defreturn_test(): return100
# 함수를 호출 value = return_test() print(value)
실행결과
1 2
$ python fun_return.py 100
아무것도 리턴하지 않기
예제
1 2 3 4 5 6 7 8 9
# 아무것도 리턴하지 않기
# 함수를 정의 defreturn_test(): return
# 함수를 호출 value = return_test() print(value)
실행결과
1 2
$ python fun_return.py None
기본적인 함수의 활용
1 2 3 4 5 6
def함수(매개변수): 변수 = 초깃값 # 여러 가지 처리 # 여러 가지 처리 # 여러 가지 처리 retunr 변수
예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
# 범위 내부의 정수를 모두 더하는 함수
# 함수 선언 defsum_all(start, end): # 변수 선언 output = 0 # 반복문을 돌려 숫자를 더함 for i inrange(start, end + 1): output += i # 리턴 return output
# 함수 호출 print("0 to 100 : ", sum_all(0, 100)) print("0 to 1000 : ", sum_all(0, 1000)) print("50 to 100 : ", sum_all(50, 100)) print("50 to 1000 : ", sum_all(50, 1000))
실행결과
1 2 3 4 5
$ python basic_func.py 0 to 100 : 5050 0 to 1000 : 500500 50 to 100 : 3825 50 to 1000 : 499275