요구인자

인자는 간단하게 함수에 데이터를 전달하는 방법이다. 

밑의 예제에서 f1(n, t, a) 는 함수의 실행을 위해 3개의 인자를 전달하라는 것이다.

여기서 중요한건 각각의 순서(위치)가 중요하다.

n이 제일 먼저 쓰여있기 때문에 가장먼저 호출해야할 값은 name.

그 다음은 t가 불러올 tel, 마지막으로는 a가 불러오는 age이다.

만약 f1(a, n, t)가 된다면 생각한 함수값들이 뒤 엉켜 버리게 된다! 왜냐, 호출의 순서가 중요하기 때문!

f1(a, n, t) 에서는 가장먼저 age를 불러오게 되고 출력된 name은 12라는 엉뚱한 값을 같게된다.

 

def f1(name, tel, age):
    print('name:', name)
    print('tel:', tel)
    print('10년 후 age:', age+10)

def main():
    n = 'aaa'
    t = '1234'
    a = 12

    f1(n, t, a)
    f1(a, n, t)    #들어가는 값이 엉킴

main()

out)

 

 

keyword argument

그럼 위와 같은 오류를 방지하기 위해 우리가 할 수 있는 것은 무엇일까?

바로 키워드인자를 이용하여 아예 값을 박제시키는 것!

 

def f1(name, tel, age=5):  #age=5: 아규먼트 기본값
    print('name:', name)
    print('tel:', tel)
    print('10년 후 age:', age+10)

def main():
    n = 'aaa'
    t = '1234'
    a = 12

    f1(tel=t, age=a, name=n)   #키워드 인자를 이용하면 순서 엉켜도 출력 제대로
    f1(n, t)

main()

out)

키워드 인자를 이용하여 오류도 엉킴도 없이 완벽한 출력이 가능하다!

 

 

가변인자

임의의 개수의 인자를 받는 함수를 가리켜 가변 인자를 사용한다고 표현한다.

표현방법은 def 함수명(*변수) 이처럼 변수 앞에 *을 붙여서 표현하면, 입력된 변수값을 튜플로 받아온다고 생각하는 것이다. 입력할 수 있는 튜플의 갯수가 제약이 없다는 것이 특이점이다.

 

def f1(*x):  #가변인자. 튜플로 받아옴.
    print('함수시작')
    for i in x:
        print(i)
    print('함수끝')


def main():
    f1()
    f1('aaa', 'bbb')
    f1('ccc', 'ddd', 'eee', 'fff')   #갯수의 제한이 없음


main()

out)

 

그럼 가변인자를 이용하여 변수들의 합을 구하는 함수를 만들어보면?

 


def add(*nums):  #가변인자. 튜플로 받아옴.

    s = 0
    for i in nums:
        s +=i
    return s


def main():

    s = add(1,2,3)
    print('add(1,2,3):', s)
    s = add(1,2,3,4,5)
    print('add(1,2,3,4,5):', s)

main()

out)

따라~~

+ Recent posts