매개변수(Parameter)와 인자(Argument)
함수를 정의할때 사용되는 변수를 매개변수, 실제로 함수가 호출될 때 넘기는 변수값을 인자라고 한다.
함수를 사용할때 Argument와 Parameter를 키워드로 matching한다.
매개변수 유형
위치 매개변수 : 인수와 순서대로 대응
기본값 매개변수 : 매개변수에 입력값이 없으면 기본값 사용
키워드 매개변수 : 인수와 매개변수를 동일이름으로 대응
가변 매개변수 : 인수의 갯수가 동적인 경우
위치 매개변수
인수와 순서대로 대응
def showGugu(start, end=5):
for dan in range(start, end + 1):
print(str(dan) + '단 출력')
showGugu(2, 3)
2단 출력
3단 출력
기본값 매개변수
매개변수에 입력값이 없으면 기본값 사용
def showGugu(start, end=5):
for dan in range(start, end + 1):
print(str(dan) + '단 출력')
showGugu(3)
3단 출력
4단 출력
5단 출력
키워드 매개변수
인수와 매개변수를 동일이름으로 대응
결과 값은 3가지 식 모두 아래와 같다 (같아서 두개는 생략)
def showGugu(start, end=5):
for dan in range(start, end + 1):
print(str(dan) + '단 출력')
showGugu(start=2, end=3)
#이름에 대한 매칭임으로 순서가 바뀌어도 알아서 매칭된다
showGugu(end=3, start=2)
# 첫번째 인수는 괜찮지만 두번째 인수를 상수로 주면 에러로 작동한다
showGugu(2, end=3)
# showGugu(start=2, 3) error
2단 출력
3단 출력
가변 매개변수
인수의 갯수가 동적인 경우
print('/n가변인수 처리')
def func1(*ar):
# print(ar)
for i in ar:
print('밥 : ' + i)
print()
print()
func1('비빔밥', '공기밥')
func1('비빔밥', '공기밥', '김밥')
/n가변인수 처리
밥 : 비빔밥
밥 : 공기밥
밥 : 비빔밥
밥 : 공기밥
밥 : 김밥
뒷부분을 가변인수 처리하는 형식으로 응용하는 것이 가능하다.
다만 앞부분에 가변인수 처리하는 것은 불가능하다
def func2(a, *ar):
#def func2(*ar, a): err
print(a)
for i in ar:
print('밥 : ' + i)
print()
func1('비빔밥', '공기밥')
func1('비빔밥', '공기밥', '김밥')
밥 : 비빔밥
밥 : 공기밥
밥 : 비빔밥
밥 : 공기밥
밥 : 김밥
가변인수를 활용한 if문과 for문 - 계산기 구현
def calcProcess(op, *ar):
re = 0
if op == 'sum':
re = 0
for i in ar:
re += i
elif op == 'mul':
re = 1
for i in ar:
re *= i
return re
print(calcProcess('sum', 1,2,3,4,5))
print(calcProcess('mul', 1,2,3,4,5))
print(calcProcess('mul', 1,2,3,4,5,1,2,3,4,5))
15
120
14400
** 는 dict로 받아들인다 하지만 인자를 전달할때 괄호를 붙이지 않고 넘겨야한다
def func3(w, h, **other):
print('w:{}', 'h:{}' .format(w, h))
print(other)
func3(55, 160)
func3(55, 160, irum='홍길동')
func3(55, 160, irum='홍길동', nai=23)
w:{} h:55
{}
w:{} h:55
{'irum': '홍길동'}
w:{} h:55
{'irum': '홍길동', 'nai': 23}
기본적으로 매개변수는 기본 타입, *매개변수는 tuple type, **매개변수는 dict type으로 출력되는 것을 확인할 수 있다
print()
def func4(a,b,*c,**d):
print(a, b)
print(c)
print(d)
func4(1, 2)
func4(1, 2, 3)
func4(1, 2, 3, 4, 5)
func4(1, 2, 3, 4, 5, x=6, y=7)
1 2
()
{}
1 2
(3,)
{}
1 2
(3, 4, 5)
{}
1 2
(3, 4, 5)
{'x': 6, 'y': 7}
'python' 카테고리의 다른 글
일급객체와 일급함수, 람다함수 (0) | 2022.10.06 |
---|---|
클로저(closure) (0) | 2022.10.06 |
function - global, nonlocal (0) | 2022.10.05 |
function 예제(동굴과 용 게임) - time.sleep(), random.randint() (0) | 2022.10.05 |
function (0) | 2022.10.05 |