작성자 :
작성일 :
진 도 :
■ 매개변수 지정하여 호출하기
파이썬에서 함수란 반복적인 작업을 보다 효율적으로 할 수 있게 하기 위해서 우리가 직접 설정하는 것이다. 이렇게 우리가 함수를 설정하는 과정에서 매개변수를 사용하였는데, 이번에는 우리가 직접 매개변수를 지정하여 호출하는 방법에 대해서 알아볼 것이다. 매개변수를 우리가 직접 지정하여 사용하면 순서에 상관없이 이용할 수 있다는 장점이 있다.
위에서와 같이 result2의 경우에는 b와 a의 순서가 반대로 되어 있지만 우리가 직접 매개변수를 지정했기 때문에 순서를 신경쓰지 않고 함수를 사용할 수 있다.
■ 입력값이 몇 개가 될지 모를 때는 어떻게 해야 할까?
입력값이 여러 개일 때 그 입력값을 모두 더해 주는 함수를 생각해 보자. 하지만 여기서 입력값이 몇개인지 모른다면 다음과 같은 매개변수를 사용하게 되어 있다.
*args 처럼 매개변수 앞에 *를 붙이게 되면 그 입력값들을 전부 모아서 튜플로 만들어 준다. 밑에서 처럼 1,2,3,4,를 함수에 넣으면 args는 저절로 (1,2,3,4)라는 튜플이 된다. 이렇게 받은 입력값들을 for 반복문을 통해서 게산을 반복하게 해준다면 여러개의 입력값을 받는 함수를 만들 수 있다.
덧셈뿐이 아니라 이렇게 곱셈과 같은 형태도 충분히 표시할 수 있다.
■ 키워드 매개변수 kwargs
키워드 매개변수를 사용할 때는 매개변수 앞에 별 두개 (**)를 붙인다.
함수의 입력값으로 a=1이 사용되면 kwargs는 {'a' =1}이라는 딕셔너리가 되고 name = 'foo', age=3이 사용되면 kwargs 는 {'age': 3, 'name': 'foo'}라는 딕셔너리가 된다. 즉 키워드 매개변수를 사용하게 되면 매개변수는 딕셔너리가 된다는 것을 알 수 있다.
■ 함수의 리턴값은 언제나 하나이다
위와 같이 코드를 구성하면 result는 (7,12)가 나오게 된다. 이는 함수의 리턴값이 언제나 하나라는 것에 있는데 result가 하나만 쓰였으므로 add_and_mul의 함숫값은 하나의 튜플 값인 (a+b, a*b)로 리턴되는 것이다. 만약 이 튜플을 분리하고자 한다면 result를 다음 과 같이 한개 더 불러오면 된다.
하지만 이러한 성격때문에 함수는 return을 만나는 순간 그 계산을 마치고 함수를 빠져나가게 된다. 즉 가장 위의 예시처럼 하나의 return에 계산을 적어야 하지, return을 위 아래로 두번 적게 되면 위의 return 계산만 마치고 함수는 끝이 나게 된다.
■ 매개변수에 초깃값 미리 설정하기
위의 예시에는 name age man이라는 3가지의 매개변수가 있다. 하지만 여기서 특이한 것이 있는데 바로 man이라는 매개변수에 이미 True로 초깃값이 설정되어 있다는 것이다. 이러한 경우에는 say_myself라는 함수에 값을 지정할때 가장 마지막 매개변수인 man에 해당되는 정보를 투입하지 않더라도 기본적으로 초깃값인 True를 갖게 된다. 하지만 반대로 say_myself의 마지막 함숫값으로 False를 작성하게 되면 마지막 man이라는 매개변수의 값이 False가 되어 "여자입니다"가 출력되게 된다. 이러한 매개변수의 초기설정에는 신경 써야할 중요한 사항이 하나 있다.
위와 같이 man=True의 값을 중간에 넣고 age 함숫값을 마지막에 넣게 되면 우리가 직접 입력한 22라는 값의 위치를 컴퓨터는 판단하지 못하게 된다. 그러므로 초깃값이 있는 매개변수를 사용할 때에는 가장 마지막에 위치하도록 하는것이 중요하다.