파이썬의 함수는 수학의 함수와 동일하다.
함수는 파이썬에서 기본으로 제공하는 내장함수와 사용자가 직접 선언하는 사용자함수가 있다.
함수는 특정 기능을 재사용하기 위해서 사용한다.
함수 = 기능
def 키워드 함수명 : 들여쓰기를 이용해서 선언한다.
함수명() 를 이용해서 함수호출
def printWeatherInfo():
print('오늘 날씨는 맑습니다. 기온은 25도입니다.')
printWeatherInfo()
printWeatherInfo()
printWeatherInfo()
==================================================
오늘 날씨는 맑습니다. 기온은 25도입니다.
오늘 날씨는 맑습니다. 기온은 25도입니다.
오늘 날씨는 맑습니다. 기온은 25도입니다.
def calFun():
n1 = int(input('n1 입력 : '))
n2 = int(input('n2 입력 : '))
print(f'n1 * n2 = {n1 * n2}')
print(f'n1 / n2 = {round(n1 / n2, 2)}')
calFun()
===================================================
n1 입력 : 10
n2 입력 : 20
n1 * n2 = 200
n1 / n2 = 0.5
함수 내에서 또 다른 함수를 호출할 수 있다.
pass를 이용해서 실행문을 생략할 수 있다.
def gugudna2():
for i in range(1, 10):
print('2 * {} = {}'.format(i, 2 * i))
gugudan3()
def gugudan3():
for i in range(1, 10):
print('3 * {} = {}'.format(i, 3 * i))
gugudan4()
def gugudan4():
for i in range(1, 10):
print('4 * {} = {}'.format(i, 4 * i))
gugudan5()
def gugudan5():
for i in range(1, 10):
print('5 * {} = {}'.format(i, 5 * i))
gugudna2()
====================================================
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27
4 * 1 = 4
4 * 2 = 8
4 * 3 = 12
4 * 4 = 16
4 * 5 = 20
4 * 6 = 24
4 * 7 = 28
4 * 8 = 32
4 * 9 = 36
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
함수 호출 사 험수에 데이터를 전달할 수 있다.
인수와 매개변수 개수는 일치해야 한다.
매개변수 개수가 정해지지 않은 경우 '*'를 이용한다.
def printScore(kor, eng, mat):
sum = kor + eng + mat
avg = sum / 3
print(f'총점: {sum}')
print(f'평균: {round(avg, 2)}')
korScore = int(input('국어 점수 입력: '))
engScore = int(input('영어 점수 입력: '))
matScore = int(input('수학 점수 입력: '))
printScore(korScore, engScore, matScore)
==============================================
국어 점수 입력: 85
영어 점수 입력: 92
수학 점수 입력: 79
총점: 256
평균: 85.33
return 키워드를 이용하면 함수 실행 결과를 호출부로 반환할 수 있다.
함수가 return을 만나면 실행을 종료한다.
import random
def getOddRandomNumber():
while True:
rNum = random.randint(1, 100)
if rNum % 2 != 0:
break
return rNum
print(f'returnValue: {getOddRandomNumber()}')
=======================================================
returnValue: 17
def cmToMm(cm):
result = cm * 10
return result
length = float(input('길이(cm)입력 : '))
returnValue = cmToMm(length)
print(f'returnValue: {returnValue}mm')
============================================
길이(cm)입력 : 10.5
returnValue: 105.0mm
함수 밖에 선언된 변수로 어디에서나 사용은 가능하지만 함수 안에서 수정할 수는 없다.(내/외부 사용가능)
함수 안에 선언된 변수로 함수 안에서만 사용가 능하다.
전역변수의 값을 수정할 수 있다.
def printArea():
triangleArea = width * height / 2
squareArea = width * height
print(f'삼각형의 넓이: {triangleArea}') #전역변수
print(f'사각형의 넓이: {squareArea}')
width = int(input('가로 길이 입력: '))
height = int(input('세로 길이 입력: '))
printArea()
=======================================================
가로 길이 입력: 10
세로 길이 입력: 20
삼각형의 넓이: 100.0
사각형의 넓이: 200
totalVisit = 0
def countTotalVisit():
global totalVisit
totalVisit = totalVisit +1
print(f'누적방문객: {totalVisit}')
countTotalVisit()
countTotalVisit()
countTotalVisit()
countTotalVisit()
countTotalVisit()
==============================================
누적방문객: 1
누적방문객: 2
누적방문객: 3
누적방문객: 4
누적방문객: 5
함수안에 또 다른 함수가 있는 형태
내부 함수를 밖에서 호출할 수 없다.
lambda키워드를 이용하면 함수 선언을 보다 간단하게 할 수 있다.
calculator = lambda n1, n2 : n1 + n2
returnValue = calculator(10, 20)
print(f'returnValue: {returnValue}')
==========================================
returnValue: 30
getTriangleArea = lambda n1, n2: n1 * n2 / 2
getSquareArea = lambda n1, n2: n1 * n2
getCircleArea = lambda r: radius * radius * 3.14
width = int(input('가로 길이 입력: '))
height = int(input('세로 길이 입력: '))
radius = int(input('반지름 길이 입력: '))
triangleValue = getTriangleArea(width, height)
squareValue = getSquareArea(width, height)
raidusValue = getCircleArea(radius)
print(f'삼각형 넓이: {triangleValue}')
print(f'사각형 넓이: {squareValue}')
print(f'원 넓이: {raidusValue}')
=============================================
가로 길이 입력: 20
세로 길이 입력: 30
반지름 길이 입력: 6
삼각형 넓이: 300.0
사각형 넓이: 600
원 넓이: 113.04
모듈이란 이미 만들어진 휼륭한 기능으로 사용자는 쉽게 사용할 수 있다.
파이썬 모듈은 내부 모듈, 외부 모듈 그리고 사용자 모듈로 구분할 수 있다.
내부 모듈: 파이썬 설치시 기본적으로 사용할 수 있는 모듈
외부 모듈: 별도 설치 후 사용할 수 있는 모듈
사용자모듈: 사용자가 직접 만든 모듈
import random
rNums = random.sample(range(1, 101), 10)
print(f'rNums: {rNums}')
===========================================
rNums: [78, 59, 83, 63, 85, 14, 79, 22, 93, 56]

파일명을 제대로 저장하자!😭
import 키워드를 이용해서 모듈을 임포트한다.
as 키워드를 이용해서 모듈 이름을 단축 시킬 수 있다.
from calculator import * #calculator안에 있는거 다 가져오기
add(10, 20)
sub(10, 20)
mul(10, 20)
div(10, 20)
----------------------------------------------------------------
from calculator import add, sub
add(10, 20)
sub(10, 20)
파일명: scores
scores = []
def addScore(s):
scores.append(s)
def getScore():
return scores
def getTotalScore():
total = 0
for s in scores:
total += s
return total
-----------------------------------------------------
import scores as sc
korScore = int(input('국어 점수 입력: '))
engScore = int(input('영어 점수 입력: '))
matScore = int(input('수학 점수 입력: '))
sc.addScore(korScore)
sc.addScore(engScore)
sc.addScore(matScore)
print(sc.getScore())
print(sc.getTotalScore())
print(sc.getAvgScores())
=========================================================
국어 점수 입력: 90
영어 점수 입력: 85
수학 점수 입력: 73
[90, 85, 73]
248
82.66666666666667
name에는 모듈 이름이 저장되거나 'main'이 저장된다.
모듈파일
def cmToMm(n):
return round(n * 10, 3)
def cmToInch(n):
return round(n * 0.393, 3)
def cmToM(n):
return round(n * 0.1, 3)
def cmToFt(n):
return round(n * 0.032, 3)
if __name__ == '__main__': #모듈파일이라 나오면 안돼서
print(f'10cm: {cmToMm(10)}mm')
print(f'10cm: {cmToInch(10)}inch')
print(f'10cm: {cmToM(10)}m')
print(f'10cm: {cmToFt(10)}ft')
--------------------------------------------
실행파일
import unitconversion as uc
if __name__ == '__main__':
inputNumber = int(input('길이(cm) 입력: '))
returnValue = uc.cmToMm(inputNumber)
print(f'{inputNumber}cm : {returnValue}mm')
returnValue = uc.cmToInch(inputNumber)
print(f'{inputNumber}cm : {returnValue}inch')
returnValue = uc.cmToM(inputNumber)
print(f'{inputNumber}cm : {returnValue}m')
returnValue = uc.cmToFt(inputNumber)
print(f'{inputNumber}cm : {returnValue}ft')
==========================================================
길이(cm) 입력: 15
15cm : 150mm
15cm : 5.895inch
15cm : 1.5m
15cm : 0.48ft
패키지를 이용하면 관련 있는 모듈을 그룹으로 관리할 수 있다.
site-packages에 있는 모듈은 어디서나 사용할 수 있다.
listVar = [2, 5, 3.14]
합 : print(f'sum(listVar): {sum(listVar)}')
---------------------------------------------
최댓값: print(f'max(listVar): {max(listVar)}')
--------------------------------------------------
최솟값: print(f'min(listVar): {min(listVar)}')
--------------------------------------------------
거듭제곱: print(f'pow(13, 2): {pow(13, 2)}')
----------------------------------------------------
반올림: print(f'{round(3.141592, 1)}')
import math
#절댓값
print(f'math.fabs(-10): {math.fabs(-10)}')
print(f'math.fabs(-0.12389): {math.fabs(-0.12389)}')
#올림
print(f'math.ceil(5.21): {math.ceil(5.21)}')
print(f'math.ceil(-5.21): {math.ceil(-5.21)}')
#내림
print(f'math.floor(5.21): {math.floor(5.21)}')
print(f'math.floor(-5.21): {math.floor(-5.21)}')
#버림
print(f'math.trunc(5.21): {math.trunc(5.21)}')
print(f'math.trunc(-5.21): {math.trunc(-5.21)}')
#최대공약수
print(f'math.gcd(14, 21): {math.gcd(14, 21)}')
#팩토리얼
print(f'math.factorial(10): {math.factorial(10)}')
#제곱근
print(f'math.sqrt(4): {math.sqrt(4)}')
print(f'math.sqrt(12): {math.sqrt(12)}')
=============================================================
math.fabs(-10): 10.0
math.fabs(-0.12389): 0.12389
math.ceil(5.21): 6
math.ceil(-5.21): -5
math.floor(5.21): 5
math.floor(-5.21): -6
math.trunc(5.21): 5
math.trunc(-5.21): -5
math.gcd(14, 21): 7
math.factorial(10): 3628800
math.sqrt(4): 2.0
math.sqrt(12): 3.4641016151377544
import time
lt = time.localtime()
print(f'time.localtime(): {lt}')
print(f'lt.tm_year(): {lt.tm_year}')
print(f'lt.tm_year(): {lt.tm_mon}')
print(f'lt.tm_mday(): {lt.tm_mday}')
print(f'lt.tm_hour(): {lt.tm_hour}')
print(f'lt.tm_min(): {lt.tm_min}')
print(f'lt.tm_sec(): {lt.tm_sec}')
print(f'lt.tm_wday(): {lt.tm_wday}')
===========================================
time.localtime(): time.struct_time(tm_year=2023, tm_mon=12, tm_mday=6, tm_hour=1, tm_min=25, tm_sec=16, tm_wday=2, tm_yday=340, tm_isdst=0)
lt.tm_year(): 2023
lt.tm_year(): 12
lt.tm_mday(): 6
lt.tm_hour(): 1
lt.tm_min(): 25
lt.tm_sec(): 16
lt.tm_wday(): 2
클래스는 키워드와 속성(변수) 그리고 기능(함수)를 이용해서 만든다.
객체는 클래스의 생성자를 호출한다.
class Car:
def __init__(self, col, len):
self.color = col
self.length = len
def doStop(self): #self는 Car라는 클래스안에 있는 기능
print('Stop!')
def doSart(self):
print('Start!')
def printCarInfo(self):
print(f'self.color : {self.color}')
print(f'self.length : {self.length}')
car1 = Car('red', 200)
car2 = Car('blue', 300)
car1.printCarInfo()
car2.printCarInfo()
=================================================
self.color : red
self.length : 200
self.color : blue
self.length : 300
이 글은 제로베이스 데이터 분석 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.