(출처) 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 블로그입니다. 게시글이 도움 되셨다면 구독과 좋아요 :)
'Programming > #Python' 카테고리의 다른 글
[Python] 지역 변수와 전역 변수 (1) | 2019.11.08 |
---|---|
[Python] 함수 인자와 매개 변수 (0) | 2019.11.08 |
[Python] 함수를 사용한 로봇 조종 및 디지털 사진 변환 프로그램 (0) | 2019.11.06 |
[Python] 튜플과 디지털 사진 변환 (0) | 2019.10.07 |
[Python] 파이썬으로 배우는 프로그래밍 (0) | 2019.10.02 |