본문 바로가기

Programming/#Python

[Python] 함수 인자와 매개 변수

목표
  1. 함수에서 사용하는 인자와 매개 변수의 다양한 사용방법을 이해

 

매개변수의 대상 
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

 

정리하기
  1. 함수에서 사용하는 인자에 매개변수 이름 같이 쓰는 것 이해하기
  2. 매개변수의 기본 값을 활용해서 함수를 다양한 방식으로 호출하는 방법

edwith, 파이썬으로 배우는 프로그래밍 기초, 김문주 교수

 

I'm a Senior Student in Data Science ! 

데이터 사이언스를 공부하고 있는 4학년 학부생의 TIL 블로그입니다. 게시글이 도움 되셨다면 구독과 좋아요 :)