본문 바로가기

python

매개변수와 인자 , 가변인수

매개변수(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