목표
- 함수에서 사용하는 인자와 매개 변수의 다양한 사용방법을 이해
매개변수의 대상
In [12]: def swap(a, b):
...: a, b = b, a #swap 함수 내부의 매개변수
...: x, y = 123, 456
In [13]: swap(x, y) #매개변수 a-> 123, b-> 456이 됨
In [14]: print(x, y) #x, y값이 바뀌지는 않음
123 456
▒ swap함수는 매개변수(parameter)의 값으로 넘겨받은 (a, b)값만 바꾸고 x, y값을 바꾸지 않음
▒ 한 번 더 접근
In [15]: def swap (a, b):
...: a, b = b, a
In [16]: def swap (a, b):
...: (a, b) = (b, a) #정석대로 표기하려면 괄호표시
In [17]: (x, y) = (123, 456)
In [18]: swap(x, y)
In [19]: print((x, y)) #튜플을 출력
(123, 456)
▒ 한 번 더 접근
In [20]: def swap(a, b):
...: a, b = b, a
...: print(a)
...: print(b) #함수 내부에서 확인할 수 있도록 설정
In [21]: (x, y) = (123, 456)
In [22]: swap(x, y)
456
123 #함수 내부 매개변수 값이 변화함을 확인
In [23]: print((x, y))
(123, 456) #여전히 x, y 값은 변하지 않음
함수인자
▒ 기본적인 인자와 매개변수를 사용하는 방법
In [1]: def create_sun(radius, color):
...: sun = Circle(radius)
...: sun.setFillColor(color)
...: sun.setBorderColor(color)
...: sun.moveTo(100, 100)
...: return sun
In [2]: sun = create_sun(30, "yellow")
#함수의 인자는 함수의 매개 변수에 순서대로 하나씩 왼쪽부터 대입
▒ 함수의 매개 변수에는 기본값을 설정할 수 있음
▒ 함수로 호출 시, 인자를 넘겨주지 않은 경우 인자가 없어도 기본값이 대입이 되는 것
In [3]: def create_sun(radius = 30, color = "yelllow"):
#create sun의 모든 매개 변수에 기본 값이 있음
sun = create_sun() #인자가 하나도 없음
#create_sun(30, "yellow")
star = create_sun(2)
#create_sun(2, "yellow")
moon = create_sun(28, "silver")
#radius와 color 매개변수의 인자가 각각 존재함
매개변수의 기본값 활용
In [4]: def avg(data, start = 0, end = None): #data는 튜플
...: if not end: #(not None) == True, (not 4) == False #숫자는 0만 False
...: end = len(data)
...: return sum(data[start:end]) / float(end-start)
...:
In [5]: d = (3, 4, 5, 6, 7)
In [6]: avg(d, 1, 4) # index 1,2,3
#python에서 튜플의 시작은 0
Out[6]: 5.0
In [7]: avg(d, 2) #index 2인 숫자부터 끝까지
Out[7]: 6.0
In [9]: avg(d) #start도 기본값으로 활용 :0
Out[9]: 5.0
☞ 매개 변수를 활용하면 튜플에서 원하는 구간 별로 평균 내기에 수월함
☞ 기본값을 가지는 매개 변수는 반드시 다른 매개 변수의 뒤에 와야 함
In [10]: def f1(x, y=0):
...: return x + y
...: def f2(x=0, y): #기본값을 가지는 매개변수 x가 y 앞에와서 틀린 함수 정의
...: return x + y
SyntaxError: non-default argument follows default argument
실습
▒ Slicing
In [1]: d = (3, 4, 5, 6, 7)
In [2]: d2 = d[1:3] #튜플을 구성하는 element들의 index는 0부터 튜플의 길이 -1까지
In [3]: d2
Out[3]: (4, 5)
In [6]: avg(d, 0, 5)
Out[6]: 5.0 #튜플 d에 있는 모든 숫자의 평균 구하기
In [7]: avg(d) #start값과 end값의 기본값이 설정되어있기 때문에
Out[7]: 5.0
In [8]: avg(d, 3) #avg함수가 유용하게 쓰이는 순간
Out[8]: 6.5 #3 index를 가진 인자부터 끝까지의 평균값
☞ 기본 값을 함수에 정의해주면 하나의 함수를 다양한 경우에 활용할 수 있음
매개변수 이름과 함께 쓰는 인자
- 함수를 부를 때 인자에 매개변수 이름을 붙여서 부를 수 있음
- 인자에 매개변수 이름을 붙여 주면 함수를 부르는 코드가 명확해짐
- 함수를 부를 때 인자의 순서를 고려하지 않아도 됨
moon = create_sun(color = "silver")
moon = create_sun(color = "silver", radius = 28) #순서에 영향을 받지 않음
In [11]: avg(d, end=3)
Out[11]: 4.0
In [12]: avg(data=d, end=3)
Out[12]: 4.0
In [13]: avg(end=3, data=d) #d는 순서대로 적었기 때문에 매개변수 이름이 안 붙음
Out[13]: 4.0
In [14]: avg(end=3, d) #이름이 있는 인자를 그렇지 않은 인자 앞에 쓸 수 없음
File "<ipython-input-14-05e9a74c5b43>", line 1
avg(end=3, d)
^
SyntaxError: positional argument follows keyword argument
정리하기
- 함수에서 사용하는 인자에 매개변수 이름 같이 쓰는 것 이해하기
- 매개변수의 기본 값을 활용해서 함수를 다양한 방식으로 호출하는 방법
edwith, 파이썬으로 배우는 프로그래밍 기초, 김문주 교수
I'm a Senior Student in Data Science !
데이터 사이언스를 공부하고 있는 4학년 학부생의 TIL 블로그입니다. 게시글이 도움 되셨다면 구독과 좋아요 :)
'Programming > #Python' 카테고리의 다른 글
[Python] 모듈과 그래픽 객체 (0) | 2019.11.08 |
---|---|
[Python] 지역 변수와 전역 변수 (1) | 2019.11.08 |
[Python] 함수를 사용한 로봇 조종 및 디지털 사진 변환 프로그램 (0) | 2019.11.06 |
[Python] 매개 변수와 반환값을 가진 함수 (0) | 2019.10.14 |
[Python] 튜플과 디지털 사진 변환 (0) | 2019.10.07 |