파이썬

함수(Function)에 대해서

ksge7 2020. 7. 8. 03:30

1. 수학에서 함수는?

두 집합의 특정한 대응 관계. 한 집합의 임의의 원소를 다른 집합의 오직 한 원소에 대응시키는 대응 관계.

 

 

2. 프로그램에서 함수, 파이썬의 함수란?

수학에서 한 원소가 다른 원소에 대응되듯, 인자(argument)를 전달받아 그 결과로 결과값, 반환값을 돌려주는 역할을 하는 것을 함수라 한다.

 

 

3. 파이썬에서 함수 만들기

def(define 정의한다는 뜻) + 함수이름 + (매개변수)

ex) def to_radians (deg) : 뜻은 deg를 radian으로 바꾸는 함수라는 뜻

 

 

4. 파라미터(parameter, 매개변수)

함수는 인자들을 가리키는 변수들을 이용하여 정의됨.

 

그러한 인자들을 파라미터(parameter, 매개변수)라고 한다.

 

예를 들어서 아래와 같은 경우에 (amount, rate, years) 들을 파라미터라고 한다.

def compute_interest(amount, rate, years) :

함수 내부에서 매개변수는 다른 변수와 동일하게 사용된다.

 

그리고 함수의 수행이 끝나면 하나의 결과값을 리턴해주어야 한다.

(물론 리턴하는 하나의 결과값을 튜플로해서 다양한 수나 문자를 넣어서 리턴하는 것이 가능하다)

def f(): # 해당 함수는 튜플 하나의 값을 리턴함.
    x=10
    y=20
    return (x,y) #하나의 튜플 안에 여러개 원소가 들어가있는 것.
    
>>> print(f())
(10,20)

>>>(a,b) = f()
>>> print(a)
10
>>> print(b)
20

 

 

5. Argument(인자)와 parameter(매개변수)의 차이

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

아래와 같이 함수 인자가 매개변수에 대입되는 것. 

즉 함수 인자를 괄호 안에 넣어주고 그 인자가 매개변수에 대입되어 함수가 수행됨.

def print_twice(text): #(text)에 해당하는 부분이 매개변수
    print(text)
    print(text)
    
>>> print_twice("I love you") #("I love you)에 해당하는 부분이 함수 인자

 

 

 

6. 함수의 종류

(1) 여러 반환문을 가진 함수

함수는 수행이 끝나면 하나의 결과값을 리턴해줘야 한다.

그렇다고 함수 내부에서 리턴해줄 공식 자체가 단 한 가지라는 것은 아니다.

여러 Return Statement(반환문)를 가진 경우에 따라 리턴해주는 값이 달라진다.

 

아래와 같이 절대값을 구하는 함수에서는 두 가지의 리턴 스테이트먼트를 가졌고

어떤 선택이냐에 따라 반환값이 달라진다. 단, 리턴하는 결과값은 단 하나다.

def absolute(x):
    if x < 0:
    	return -x
    else:
    	return x

 

(2) 논리값을 반환하는 함수(조건함수, predicate)

논리값 True / False을 반환하는 함수로 아래와 같은 예를 들 수 있다.

def is_divisible(a, b):
    if a%b == 0:
        return True
    else:
        return False

조건함수는 if문항의 조건이나 while문항의 조건 안에 바로 사용이 가능하며,

위와 같은 함수도 축약하고 같은 기능을 갖게 할 수 있다.

def is_divisible(a, b) :
    return a & b == 0

 

(3) 결과값이 없는 함수

함수 중에선 결과값이 없는 함수도 있다.

이 경우 None 값을 반환한다.

아래 예시와 같은 경우 프린트된 값은 존재하지만, 이것이 리턴을 의미하는 것은 아니다.

함수 내 return value가 없을 경우 None을 반환했다.

def turn_right():
    for i in range(3):
        hubo.turn_left()
        
>>> s = turn_right()
>>> print(s)
None

 

(4) input함수

사용자가 입력한 문자열의 입력을 받는 함수(숫자를 입력해도 문자열에 숫자가 들어간 형태로 입력됨)

숫자를 입력하고 싶다면 문자열 형태로 입력된 숫자를 int함수를 이용해 데이터 타입을 바꿔줘야 한다.

name = input("what is your name?") #실행시 "what...name?" 텍스트 출력 후 문자열 입력 가능
print("welcome to Hometown" + name) # 실행시 "welcome..." 텍스트 출력 후 입력한 이름 출력
>>> num = input("숫자를 입력해주세요") #숫자를 입력하지만 문자열로서 입력된다.

"숫자를 입력해주세요" > 100

>>> type(num)
<class 'str'>

#키보드를 이용한 입력은 기본적으로 문자열이다.

>>> int(num)
>>> type(num)
<class 'int'>

#int함수를 써준뒤에야 숫자형으로 데이터가 바뀐다.