본문 바로가기

Programming/#Python

[Python] 매개 변수와 반환값을 가진 함수

(출처) edwith 파이썬으로 배우는 프로그래밍 기초_ 김문주 교수 

 

함수(function) : python 프로그램을 구성하는 가장 기본적인 요소
  • 한 집합의 임의의 한 원소를 다른 집합의 오직 한 원소에 대응시키는 대응 관계
  • 파이썬에서 x는 인자 (Argument), f(x)는 함수의 결과로 함수의 반환값, 결과값

 


함수의 정의

수학에서 쓰는 함수와 Python에서 쓰는 함수는 굉장히 유사함

def to_radians(deg) : #def는 define의 줄임말, 정의한다는 뜻   
	return (deg / 180.0) * math.pi #원넓이 공식

    	a = to_radians(90)     
        print(a)
1.570796...

 

 

Python이 제공하는 함수 

1.형 변환 함수 : 하나의 데이터 형태를 다른 데이터 형태로 바꾸는 함수 

In [1]: int("32") #문자열을 정수로 변환
Out[1]: 32

In [2]: int(17.3) #실수를 정수로 변환
Out[2]: 17

In [3]: float(17) #정수를 소수로 변환
Out[3]: 17.0
In [7]: float("3.1415")
Out[7]: 3.1415

In [8]: str(17) + " " + str(3.1415) #문자열은 + 연산에서 그대로 붙여줌
Out[8]: '17 3.1415'

In [9]: complex(17) #정수를 복소수로 변환
Out[9]: (17+0j)

▦ 여러 수학 함수를 제공하는 math 모듈을 사용하려면 import math 를 불러와야 함

In [10]: import math

In [11]: degree = 45

In [12]: radians = degree / 360.0 * 2 * math.pi

In [13]: print(math.sin(radians)) #sin
0.7071067811865476

In [14]: print(math.sqrt(2) / 2) #square root
0.7071067811865476

math 모듈의 함수를 자주 사용할 경우 함수를 간결하게 지정해두고 필요할 때마다 불러올 수 있음

In [15]: import math

In [16]: sin = math.sin

In [17]: pi = math.pi

In [19]: radians = degree / 360.0 * 2 * pi

In [20]: print(sin(radians))
0.7071067811865476

 


매개변수 
  • 함수는 인자들을 가리키는 변수들을 이용하여 정의됨
  • 함수 내부에서 매개 변수는 보통 변수와 동일한 방법으로 사용됨
  • 함수의 수행이 끝나면 하나의 결과값을 반환(Return)해야 함
In [21]: def compute_interest(amount, rate, years) : #여기에 다양한 인자값들을 넣어 사용 가능
    ...:     value = amount * (1 + rate / 100.0) ** years
    ...:     return value 

In [22]: s1 = compute_interest(200, 7, 1)

In [23]: s2 = compute_interest(500, 1, 20)

여러 반환문을 가진 함수

In [24]: def absolute(x): #인자 x에 대한 절대값을 계산한 함수
    ...:     if x < 0:
    ...:         return -x
    ...:     else: #x가 0이거나 양수인 경우
    ...:         return x
    
#다른 접근
In [25]: def absolute(x):
    ...:     if x < 0:
    ...:         return -x
    ...:     return x #if를 만족하지 않을 때 이곳으로 넘어감

하나의 함수 안에 return문은 여러 개가 가능하지만 return value는 오직 하나만 가능함

In [26]: def absolute(x): #문제가 있는 프로그램
    ...:     if x < 0:
    ...:         return -x
    ...:     else x > 0:
    ...:         return x #x = 0일 때를 정의하지 않음

 


논리값

True 나 False를 반환하는 함수를 조건함수라고 함

In [28]: def is_divisible(a, b):
    ...:     if a % b == 0: #나누어 떨어짐
    ...:        return True
    ...:     else:
    ...:         return False
    
#축약해서
In [32]: def is_divisible(a, b):
    ...:     return a % b == 0

if문항의 조건이나 while문항의 조건에 바로 사용할 수 있음

In [31]: if is_divisible(x, y):
    ...:     print('x is divisible by y')

함수들 중에는 결과값이 없는 함수들도 많음 

In [33]: def turn_right(): #hubo 예제
    ...:     for i in range(3): 
    ...:         hubo.turn_left() #return값을 따로 지정하지 않음

s = turn_right()
print(s)
None #자동으로 반환됨

 


용어 정의

함수가 호출되면, 호출될 때의 함수 인자들은 함수의 매개 변수로 대입

In [36]: def print_twice(text): #매개변수
    ...:     print(text)
    ...:     print(text)
    
print_twice("I love CS101") #인자
I love CS101
I love CS101

함수는 하나의 값만 반환할 수 있지만 튜플도 반환할 수 있기 때문에 여러 값을 반환할 수 있는 셈

In [37]: def student():
    ...:     name = "Hong, Gildong"
    ...:     id = 20101234
    ...:     return name, id
    
name, id = student() #튜플을 함수 return값에 넣어줌
In [38]: def f(): #튜플 하나의 값을 return함
    ...:     x = 10
    ...:     y = 20
    ...:     return (x, y) #하나의 튜플 안에 원소가 2개
    
 #예제
 In [38]: def f():
    ...:     x = 10
    ...:     y = 20
    ...:     return (x, y)
    ...:

In [39]: print(f())
(10, 20)

In [40]: (a, b) = f()

In [41]: print((a,b))
(10, 20)

In [42]: print(a)
10

In [43]: print(b)
20 #의미가 명확한 튜플은 괄호를 생략하고 쓸 수 있음

 


input함수
  • 메시지를 출력하고, 키보드를 통해서 사용자의 문자열의 입력을 받는 함수
  • 사용자가 Enter키를 입력하면, 사용자가 입력한 전체 문자열이 반환되는 함수
In [57]: name = input("What is your name?")
What is your name? Jiwon Lee #늘 문자열만 반환함

In [58]: print(name)
 Jiwon Lee

In [59]: raw_n = input("Enter a positive integer> ")
Enter a positive integer> 99 #str

In [60]: print(raw_n)
99

In [61]: type(raw_n)
Out[61]: str

In [62]: n = int(raw_n)

In [63]: type(n)
Out[63]: int

숫자 입력이 필요하다면 변환함수를 사용해야 함

In [52]: raw_n = input("15")
15

In [53]: n = int(15)

In [54]: for i in range(n):
    ...:     print("*" * i) #i에는 0~14까지의 숫자가 입력될 것

*
**
***
****
*****
******
*******
********
*********
**********
***********
************
*************
**************

 


정리하기
  • 매개 변수반환값을 가진 함수를 이해하고 사용

 

I'm a Senior Student in Data Science ! 

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