함수 내에서만 사용할 수 있는 변수가 있다.
num_out = 10
def printNumbers():
print(f'num_out: {num_out}')
printNumbers()
print(f'num_out: {num_out}')
-->
num_out: 10
num_out: 10
--
num_out = 10
def printNumbers():
num_out = 20
print(f'num_out: {num_out}')
printNumbers()
print(f'num_out: {num_out}')
-->
num_out: 20
num_out: 10
def printNumbers():
num_in = 20
print(f'num_in : {num_in}')
print(f'num_in : {num_in}')
-->
NameError: name 'num_in' is not defined
함수 밖에서 num_in을 호출하면 지역변수이기 떄문에 뜨지 않는다.
num_out = 10
def printNumbers():
global num_out
num_out = 20
print(f'num_out: {num_out}')
printNumbers()
print(f'num_out: {num_out}')
-->
= 함수 내부에서 전역변수를 수정할 때 사용하는 키워드
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
함수 안에 또 다른 함수
def out_function():
print('out_function called')
* def in_function():
print('in_function called')
* in_function()
out_function()
def out_function():
print('out_function called')
def in_function():
print('in_function called')
in_function()
out_function()
* in_function()
-->
NameError: name 'in_function' is not defined.
def calculator(n1, n2, operator):
def addCal():
print(f'덧셈연산: {n1 + n2}')
def subCal():
print(f'뺼셈연산: {n1 - n2}')
def mulCal():
print(f'곱셈연산: {n1 * n2}')
def divCal():
print(f'나눗셈연산: {n1 / n2}')
if operator == 1:
addCal()
elif operator == 2:
subCal()
elif operator == 3:
mulCal()
elif operator == 4:
divCal()
while True:
num1 = float(input('실수(n1) 입력: '))
num2= float(input('실수(n2) 입력: '))
operatorNum = int(input('1.덧셈, 2.뺄셈, 3.곱셈, 4.나눗셈, 5.종료'))
if operatorNum == 5:
print('Bye')
break
calculator(num1, num2, operatorNum)
함수 선언을 보다 간단하게 하자
def calculator(n1, n2):
return n1 + n2
#돌아오니까 변수재지정
returnValue = calculator(10, 20)
print(f'returnValue: {returnValue}')
=
# 변수 = 매개변수 : 연산식
calculator = lambda n1, n2: n1 + n2
returnValue = calculator(10, 20)
print(f'returnValue: {returnValue}')
#함수 선언부
getTriangleArea = lambda n1, n2: n1 * n2 / 2
getSquareArea = lambda n1, n2: n1 * n2
getCircleArea = lambda r: r * r * 3.14
width = int(input('가로 길이 입력: '))
height= int(input('세로 길이 입력: '))
radius= int(input('반지름 길이 입력: '))
#함수 호출부
triangleValue = getTriangleArea(width, height)
squareValue = getSquareArea(width, height)
circleValue = getCircleArea(radius)
print(f'삼각형 넓이: {triangleValue}')
print(f'사각형 넓이: {squareValue}')
print(f'원 넓이: {circleValue}')
-->
가로 길이 입력: 20
세로 길이 입력: 30
반지름 길이 입력: 6
삼각형 넓이: 300.0
사각형 넓이: 600
원 넓이: 113.04
함수가 선언되어 있는 파이썬 파일
import random
rNum = random.randint(1, 10)
print(f'rNum : {rNum}')
import random
rNums = random.sample(range(0, 101), 10)
print(f'rNums: {rNums}')
모듈은 파이썬 파일이다
1 = 모듈
# calculator.py
def add(n1, n2):
print(f'덧셈 결과: {n1 + n2}')
def sub(n1, n2):
print(f'뺼셈 결과: {n1 - n2}')
def mul(n1, n2):
print(f'곱셈 결과: {n1 * n2}')
def div(n1, n2):
print(f'나눗셈 결과: {n1 / n2}')
--
2 = 모듈 사용
# module.py
import calculator
calculator.add(10, 20)
calculator.sub(10, 20)
calculator.mul(10, 20)
calculator.div(10, 20)
-->
덧셈 결과: 30
뺼셈 결과: -10
곱셈 결과: 200
나눗셈 결과: 0.5
모듈명 / . / 그 안에 있는 기능
# work.py
import random
def getLottoNumbers():
result = random.sample(range(1, 45), 6)
return result
import work
result= work.getLottoNumbers()
print(f'LottoNumbers: {result}')
# work2.py
def reverseStr(str):
reversedString = ''
for c in str:
reversedString = c + reversedString
return reversedString
# work2.module.py
import work2
userInputStr = input('문자열 입력: ')
reversedString = work2.reverseStr(userInputStr)
print(f'reversedString: {reversedString}')
-->
문자열 입력: asdfg
reversedString: gfdsa