함수: 특정 기능을 재사용하기 위해서 사용. (보다 효율적인 코딩)
파이썬의 함수는 수학의 함수와 동일하다.
def 함수이름(x, y): #함수 선언
return x + y #실행부: 들여쓰기
# ⬆️ 함수 선언부 (* 선언만 하면 print 되지 않음)
# ⬇️ 함수 호출부
print(함수이름(100, 50)) #결과: 150
함수이름() # 함수 호출: 반드시 함수명+소괄호 형태
함수 내 또 다른 함수를 호출.
함수 분기에 따라 호출 순서 유의.
def fun1():
print('fun1 호출!')
fun2()
print('fun2 호출 후에 실행!')
def fun2():
print('fun3 호출!')
fun3()
def fun3():
print('fun3 호출!')
fun1()
↓
fun1 호출!
fun3 호출!
fun3 호출!
fun2 호출 후에 실행!
함수 실행 결과를 실행부에서 호출부로 반환
- 함수가 return을 만나면 실행 종료, 결과 반환 (return 이후 구문 실행 X)
def getOddRandomNum ():
while True:
rNum = random.randint(1, 100)
if rNum % 2 != 0:
break
return rNum
print(f'홀수인 난수: {getOddRandomNum()}')
▼
#홀수인 난수: 17
호출부 내 매개변수 활용 가능
인수와 매개변수 개수 매칭 필수
def greet(customer, grade, greetText):
print(f'{customer} {grade}님 {greetText}.')
name = input('이름 입력: ')
grade = input('직위 입력: ')
greetText = input('인삿말 입력: ')
greet(name, grade, greetText)
↓
이름 입력: ***홍길동***
직위 입력: ***선임***
인삿말 입력: ***감사합니다***
홍길동 선임님 감사합니다.
매개변수 개수가 정해지지 않았을 때,
매개변수 앞에 *(별표) 처리
def printNumber(*numbers):
for i in numbers:
print(i, end="")
print()
printNumber()
printNumber(10)
printNumber(10, 20)
printNumber(10, 20, 30)
↓
10
1020
102030
totalVisit = 0 # 전역변수
def countTotalVisit():
global totalVisit # global
totalVisit += 1
print(f'누적 방문객: {totalVisit}')
countTotalVisit()
countTotalVisit()
countTotalVisit()
countTotalVisit()
countTotalVisit()
▼
누적 방문객: 1
누적 방문객: 2
누적 방문객: 3
누적 방문객: 4
누적 방문객: 5
함수 내 함수가 중첩되어 있는 형태
- 중첩 함수는 외부에서 사용 불가
함수 선언을 보다 간단하게 가능
def calculator (n1, n2):
return n1 + n2
calculator = lambda n1, n2: n1+n2
모듈: 함수가 선언되어 있는 파이썬 파일 (특정 기능을 가지고 있는 파이썬 파일)
random 모듈

파이썬 파일로 저장
import 키워드로 모듈 임포트
as 키워드로 모듈 이름 단축
import calculator as cal
cal.add(10, 20)
cal.sub(10, 20)
모듈의 특정 기능만 사용
from calculator import add, sub
add(1, 5)
sub(500, 800)
from calculator import *
add(1, 5)
sub(500, 800)
mul(11, 52)
div(830, 90)

#수학 관련 함수
#합 = sum
listVar = [2, 85, 3.55, 99]
print(f'{sum(listVar)}') # == 189.55
#최대값 = max
listVar = [2, 85, 3.55, 99]
print(f'{max(listVar)}') # == 99
#최소값 = min
listVar = [2, 85, 3.55, 99]
print(f'{min(listVar)}') # == 2
#거듭제곱 = pow
print(f'{pow(13, 2)}') # == 169
print(f'{pow(2, 3)}') # == 8
print(f'{pow(4, 4)}') # == 256
#반올림 = round
print(f'{round(3.141592, 1)}') # == 3.1
print(f'{round(3.141592, 2)}') # == 3.14
print(f'{round(3.141592, 3)}') # == 3.142
print(f'{round(3.141592, 4)}') # == 3.1416
import math
# 절댓값 = math.fabs
print(f'{math.fabs(-55)}') # == 55
# 올림 = math.ceil
print(f'{math.ceil(1.691)}') # == 2
print(f'{math.ceil(-1.691)}') # == -1
# 내림 = math.floor
print(f'{math.floor(1.691)}') # == 1
print(f'{math.floor(-1.691)}') # == -2
# 버림 = math.trunc
print(f'{math.trunc(1.691)}') # == 1
print(f'{math.trunc(-1.691)}') # == -1
# 최대공약수 = math.gcd
print(f'{math.gcd(98, 12)}') # == 2
# 팩토리얼 = math.factorial
print(f'{math.factorial(5)}') # == 120
# 제곱근 = math.sqrt
print(f'{math.sqrt(9)}') # == 3
import random
# 임의의 난수 1건 출력
print(random.randint(1, 5))
# 임의의 난수 리스트 N개 출력
print(random.sample(range(2), 2))
# 이 경우 [1, 0] 출력
import time
# 현재 시간
print(time.localtime())
# 현재 시간에서 year 출력
print(time.localtime().tm_year) # 연도
print(time.localtime().tm_mon) # 월
print(time.localtime().tm_mday) # 일
print(time.localtime().tm_hour) # 시간
print(time.localtime().tm_min) # 분
print(time.localtime().tm_sec) # 초
print(time.localtime().tm_wday) # 요일 (0 월요일 ~ 6 일요일)
print(time.localtime().tm_yday) # 1월 1일 이후 날짜 수


패키지를 이용하면 관련있는 모듈을 그룹으로 관리 가능

site-packages에 있는 모듈은 어디서나 사용 가능
import sys
for path in sys.path:
print(path)