Programming Language/Python

Python : 함수

GGkeeper 2022. 1. 13. 21:22

##########
## 함수 
##########
함수는 1개 이상의 명령어를 모아 놓은 것이고 함수를 실행하면 여러 개 모아놓은 명령어들이 실행된다.

함수 종류
라이브러리 함수 : 파이썬을 설치하면 제공되는 함수 (print, input)
패키지 함수 : 패키지를 설치하면 제공되는 함수
사용자 정의 함수 : 사용자가 직접 만들어서 사용하는 함수

함수는 코드의 중복을 제거하고 다시 사용하는 재사용성의 의미를 가지고 있다.

입력값은 함수를 호출할 때 함수에 전달하는 값을 말한다.
입력값 : 인수, 인자, 아규먼트, 파라미터, 매개변수

출력값은 함수가 종료하면 호출된 쪽으로 값을 전달하는 것을 말한다.
출력값 : 리턴값

인수, 인자, argument :
- 함수로 전달되는 값을 말한다.
- 함수 호출 부분에 있다. e.g.) max(1,2), print('Hello')

매개변수, parameter : 
- 함수 내부에서 함수로 전달된 값을 저장한 변수를 말한다. 
- 함수 정의 부분에 있다.
e.g.)
def max(i, j):
    :
    :

함수의 종료 시점
- 함수안에 실행문들이 끝난 경우
- 함수에서 리턴문을 만난 경우

사용자 정의 함수
사용자가 새롭게 생성하는 함수를 말한다.

함수 정의
함수 정의는 함수를 만드는 것이다.
만들어진 함수는 메모리에 저장되어 있다.
형식 :
def 함수명(매개변수):  <-- 함수 머리 부분(매개변수 생략 가능)
    """doc string (생략 가능)"""   <-- 함수 몸체 부분
    실행문
      :
    return 값          <-- 생략 가능

함수 호출
함수 호출이란 메모리에 만들어진 함수를 실행시키는 것이다.
함수가 호출되면 호출된 함수로 건너뛰며(점프한다.) 함수 안에 있는 실행문을 실행하다가 
return 문을 만나거나 함수 안에 있는 실행문들이 끝나면 함수를 호출한 쪽으로 돌아온다.
함수 호출 형식 : 
함수명()  <-- 함수 몸체 부분을 빼고 함수 머리부분의 함수명만 사용한다.
 
함수는 정의가 먼저 나오고 호출이 나중에 나온다.
함수 호출이 먼저 나오고 함수 정의가 뒤에 오면 에러가 발생된다.

-- 함수1.py --
"""
파일명 : 함수1.py
프로그램 설명 : 함수 예제
"""

# myfunction 함수를 만들어 보기
# myfunction 함수의 기능은 문자열 출력하는 것이다.

# 함수를 정의할 때 주의할 점은 이미 존재하는 함수나 클래스를 만들면 안된다.
# 순서 : 함수 정의 -> 함수 호출 O
# 순서 : 함수 호출 -> 함수 정의 X 

# 1. 함수 정의 (함수 만들기)
def myfunction(): 
    """처음 만드는 함수"""  
    print('함수 실행!')
    print('Hello function!')
    
# 2. 함수 호출 (함수 실행하기)
myfunction()    

# 메모리 주소 확인하기
# 함수명은 메모리 주소다.
print(myfunction)
print(id(myfunction))
print(hex(id(myfunction)))

# 함수 호출
# 함수 호출은 메모리에 만들어진 함수로 점프해서 함수 안에 있는 실행문들을 실행하는 것이다.    
myfunction()  
myfunction()  # 함수 재사용(재활용)
myfunction()  # 함수 재사용(재활용)
print('프로그램 종료')
-- 함수1.py --

-- 함수2.py --
"""
파일명 : 함수2.py
프로그램 설명 : 함수 예제
"""

# 함수를 사용하지 않은 경우
i = 1
print(i)

# 함수를 사용한 경우
def function():
    i = 1
    print(i)
    
function()  # 인수가 없는 경우   

# 함수를 사용한 경우
def function2(i):
    print(i)
    
function2(1)  # 인수가 있는 경우 

# 함수를 사용한 경우
def function3(i,j,k):
    hap = i + j + k
    print(hap)
    
function3(1,2,3)  # 인수가 있는 경우 
-- 함수2.py --


-- 함수3.py --
"""
파일명 : 함수3.py
프로그램 설명 : 함수 예제
"""

# 리턴값을 사용한 경우
def function():
    i = 1
    return i
    
retVale = function()  # 리턴값은 변수로 받을 수 있다.
print(retVale);
print(function())  # 리턴값은 함수로 받을 수 있다.

# 리턴값이 없을 경우에는 None을 리턴한다. 
def function2(x):
    y = x + 5
    print(y)

print(function2(3))  # None
-- 함수3.py --


-- 함수4.py --
"""
파일명 : 함수4.py
프로그램 설명 : 4가지 유형의 함수 만들기 예제
"""

# 첫 번째 유형의 함수
# 첫 번째 유형의 함수명 : f1
# 매개변수 : 1개 있음
# - 매개변수명 : x
# 리턴값   : 있음
# - 리턴값 : y
# 기능 : 매개변수에 5를 더해서 호출한 쪽으로 돌려준다.
def f1(x):
    y = x + 5
    return y

# 함수 호출
# 리턴값이 있는 함수는
# 1. 변수로 받을 수 있다.
# 2. 함수로 받을 수 있다.
number = f1(3)
print(number)        # 8
print(f1(3))         # 8
print(max(f1(3),2))  # 8

# 두 번째 유형의 함수
# 두 번째 유형의 함수명 : f2
# 매개변수 : 없음
# 리턴값   : 없음
# - 리턴값 : None을 리턴한다.
# 기능 : 화면에 8을 출력한다.
def f2():
    print(8)

# 함수 호출
# 리턴값이 없는 함수는
# 1. 변수로 받으면 안된다. (받을 수도 있다.)
# 2. 함수로 받으면 안된다. (받을 수도 있다.)
# retValue = f2()
# print(retValue, type(retValue))  # None
f2()

# 세 번째 유형의 함수
# 세 번째 유형의 함수명 : f3
# 매개변수 : 1개 있음
# - 매개변수명 : x
# 리턴값   : 없음
# - 리턴값 : None을 리턴한다.
# 기능 : 매개변수에 5를 더해서 화면에 y를 출력한다.
def f3(x):
    y = x + 5
    print(y)

# 함수 호출
# 리턴값이 없는 함수는
# 1. 변수로 받으면 안된다. 
# 2. 함수로 받으면 안된다. 
f3(3)   # 8
f3(10)  # 15


# 네 번째 유형의 함수
# 네 번째 유형의 함수명 : f4
# 매개변수 : 없음
# 리턴값   : 있음
# - 리턴값 : y
# 기능 : y에 8을 저장한 후 y를 호출한 쪽으로 돌려준다.
def f4():
    y = 3 + 5
    return y

# 함수 호출
# 매개변수가 없는 함수는
# 함수 호출 시 값을 넘겨줄 수 없다.
# 리턴값이 있는 함수는
# 1. 변수로 받을 수 있다.
# 2. 함수로 받을 수 있다.
retValue = f4()
print(retValue)      # 8
print(f4())          # 8
print(max(f4(), 3))  # 8

-- 함수4.py --

'Programming Language > Python' 카테고리의 다른 글

for 문 테스트 (IP 주소 생성기)  (0) 2022.01.13
Python : 모듈  (0) 2022.01.13
[기초] 6-2. 전달값과 반환값  (0) 2021.11.09
[기초] 6-1. 함수  (0) 2021.11.09
[기초] 5-5. 한 줄 for 문  (0) 2021.11.08