
함수는 곧 기능❗ 함수 사용 목적은 기능 재사용❗

import가 필요없다.print(), input(), divmod(), int(), float(), len(), ... 함수 선언과 호출
def keyword, 함수명, : , 들여쓰기(코드 블록)를 이용해 정의한다.()를 이용해 함수를 호출한다. # 함수 선언(정의)
def PrintUserName(name):
print(f'{name}고객님, 안녕하세요.')
# 함수 호출
PrintUserName('홍길동')
def Func1():
print('Func1 호출!')
Func2()
print('Func2 호출 후에 실행!')
def Func2():
print('Func2 호출!')
Func3()
# <실행결과>
def Func3(): # Func1 호출!
print('Func3 호출!') # Func2 호출!
# Func3 호출!
>>> Func1() # Func2 호출 후에 실행!
매개변수와 인수
인수(argument)와 매개변수(parameter)는 함수가 주고 받는 데이터(값)으로 서로 쌍을 이루어야 하므로 개수가 항상 일치해야 한다.
━ 함수에 입력으로 전달된 값을 받는 변수
━ 매개변수는 일종의 지역변수로 함수 내에서만 사용 가능
✅ 매개변수의 개수가 정해지지 않은 경우 *을 사용한다.
def PrintNumber(*numbers):
print(type(numbers)) # <class 'tuple'>
for num in numbers:
print(num, end=' ')
print()
>>> PrintNumber() #
>>> PrintNumber(1) # 1
>>> PrintNumber(1, 2) # 1 2
>>> PrintNumber(1, 2, 3) # 1 2 3
>>> PrintNumber(1, 2, 3, 4) # 1 2 3 4
>>> PrintNumber(1, 2, 3, 4, 5) # 1 2 3 4 5
━ 함수를 호출할 때 전달하는 입력값을 의미
def add(a, b): # a, b는 매개변수
return a+b
print(add(3, 4)) # 3, 4는 인수
함수 실행 결과 반환
return keyword를 사용해 함수 실행 결과를 함수 호출부로 반환한다. def AddCal(n1, n2):
return n1 + n2
# 결과를 바로 출력할 수도 있고,
print(AddCal(3, 9))
# 결과를 변수에 할당할 수도 있다.
returnValue = AddCal(20, 10)
print(f'returnValue: {returnValue}')
return이 실행되면 함수 실행문 어느 위치에서건 바로 종료된다.전역변수 vs 지역변수
━ 함수 밖에 선언된 변수
━ 선언된 파일 내에서 사용 가능
━ 함수 내에서는 값을 수정할 수 없다.
✅ 함수 내 값 수정을 위해 global keyword 사용
num_out = 10
def PrintGlobalNumber():
global num_out
print(f'num_global: {num_out}') # num_global: 10
num_out = 100
print(f'num_global: {num_out}') # num_global: 100
PrintGlobalNumber()
print(f'num_out: {num_out}') # num_out: 100
━ 함수 내에 선언된 변수
━ 선언된 함수 내에서만 사용 가능
def PrintInNumber():
num_in = 20
print(f'num_in: {num_in}') ⭕
PrintInNumber()
print(f'num_in: {num_in}') ❌ #-> NameError 발생
함수 안에 또 다른 함수가 정의되어 있는 형태
def OutFunc():
print('Out Function Called!!')
def InnerFunc():
print('Inner Function Called~!')
InnerFunc() ⭕
OutFunc()
InnerFunc() ❌ #-> NameError 발생
lambdaKeyword를 사용해 함수 선언을 보다 간단하게 할 수 있다.
✅ [형식1] 함수명 = lambda 매개변수: 실행문
[형식2] 결과값 = (lambda 매개변수: 실행문)(인수)
# 람다함수
Calculator = lambda x, y: x + y
returnVal = Calculator(3, 4)
print(f'returnValue: {returnVal}')
# 일반함수
def AddCalculate(x, y): # 매개변수
return x + y
returnVal = AddCalculate(3, 4) # 인수
print(f'returnValue: {returnVal}')
모듈이란, 함수나 변수 또는 클래스를 모아 놓은 파이썬 파일(*.py)이다.
import Keyword를 이용해 모듈을 사용할 파일로 가져온다. import module_calculator
module_calculator.calculator.AddCal(12, 17)
module_calculator.calculator.SubCal(12, 17)
module_calculator.calculator.MulCal(12, 17)
module_calculator.calculator.DivCal(12, 17)
as Keyword를 이용해 모듈 이름을 단축시킬 수 있다. import module_calculator as calculator
calculator.AddCal(12, 17)
calculator.SubCal(12, 17)
calculator.MulCal(12, 17)
calculator.DivCal(12, 17)
from Keyword를 사용하면 특정 기능(함수)만을 선택해서 가져 수 있다.from Keyword를 이용할 경우 함수를 호출할 때 모듈명을 적을 필요없다. from module_calculator import AddCal, SubCal
AddCal(21, 46)
SubCal(21, 46)
random, time, math, operator, copy, ...사용자가 정의해서 만든 모듈

# [계산기 모듈]
def AddCal(n1, n2):
print(f'덧셈: {n1} + {n2} = {round(n1 + n2, 2)}')
def SubCal(n1, n2):
print(f'뺄셈: {n1} - {n2} = {round(n1 - n2, 2)}')
def MulCal(n1, n2):
print(f'곱셈: {n1} * {n2} = {round(n1 * n2, 2)}')
def DivCal(n1, n2):
print(f'나눗셈: {n1} / {n2} = {round(n1 / n2, 2)}')

import module_calculator
module_calculator.AddCal(10, 20)
module_calculator.SubCal(10, 20)
module_calculator.MulCal(10, 20)
module_calculator.DivCal(10, 20)
📌 파이썬에서 기본적으로 제공하고 있는 전역변수
__name__을 이용해
실행 파일, 즉 메인 파일을 지정할 수 있다.
파이썬 파일마다 __name__ 변수에 특정 문자열 값이 자동으로 저장
❇ 해당 파일에서 실행이 이루어지면 ‘__main__’이라는 문자열이 할당
❇ 해당 파일이 다른 파일의 모듈로서 사용되어지면 ‘파일명’이 문자열로 할당

만든 파일이 다른 파일에 import되어 모듈로 사용될 수도 있고, 실행 파일이 될 수도 있다. 이때 모듈로서 실행되면 안되는 코드를 __name__을 이용해 조건문으로 걸러낼 수 있다.

print(f'unit_conversion.py __name__: {__name__}')
# 이 파일이 실행파일이 되면 전체 코드가 모두 실행된다.
def CmToMm(n):
return round(n * 10, 3)
def CmToM(n):
return round(n * 0.01, 3)
def CmToInch(n):
return round(n * 0.393, 3)
def CmToFeet(n):
return round(n * 0.032, 3)
# 이 파일이 모듈일 때는 실행되는 않는 부분 ---------------
🚩 if __name__ == '__main__':
print(f'10cm: {CmToMm(10)}mm')
print(f'10cm: {CmToM(10)}m')
print(f'10cm: {CmToInch(10)}inch')
print(f'10cm: {CmToFeet(10)}ft')
# 이 파일을 시작 파일로 실행한 결과
# unit_conversion.py __name__: __main__
# 10cm: 100mm
# 10cm: 0.1m
# 10cm: 3.93inch
# 10cm: 0.32ft
폴더처럼 관련 있는 모듈을 모아 그룹으로 관리할 수 있다.

site-packages라는 폴더에 넣어두면 어디에서 사용할 수 있는 범용 모듈이 된다.