함수를 사용하는 이유는, 기능을 재사용하기 위함이다.
def printNumbers(*numbers):
print(f'numbers: {numbers}, type: {type(numbers)}')
printNumbers()
printNumbers(1)
printNumbers(1, 2)
>>>
numbers: (), type: <class 'tuple'>
numbers: (1,), type: <class 'tuple'>
numbers: (1, 2), type: <class 'tuple'>
함수는 return을 만나면 실행을 종료하고 결과값을 반환한다.
def oddOrEven(n):
if n % 2 == 0:
print('if문을 지났습니다.')
return '짝수'
else:
print('else문을 지났습니다.')
return '홀수'
num = 4
print(f'{num} => {oddOrEven(num)}')
>>>
if문을 지났습니다.
4 => 짝수
전역 변수는 함수 밖에 선언된 변수로, 어디에서나 사용 가능하나 함수 안에서 수정할 수 없다.
지역 변수는 함수 안에 선언된 변수로, 함수 안에서만 사용할 수 있다.
num_out = 10
def printNum():
num_out = 20 # 밖에서 선언된 num_out과 형태는 같지만 다른 것
print(f'in printNum(): {num_out}')
printNum()
print(f'out printNum(): {num_out}')
>>>
in printNum(): 20
out printNum(): 10
# 방문객 수 카운트
totalVisit = 0
def countTotalVisit():
global totalVisit
totalVisit += 1
print(f'누적 방문객 수: {totalVisit}')
countTotalVisit()
countTotalVisit()
>>>
누적 방문객 수: 1
누적 방문객 수: 2
함수명 = lambda 매개변수: 실행문
add = lambda n1, n2: n1 + n2
print(add(10, 20))
>> 30
return 부분에서 실행되는 내용을 계속 나열해보니 이해가 된다.
def factorial(n):
if n == 1:
return 1
return n * factorial(n-1)
print(factorial(5))
>>>
120
def seqMul(a1, r, n):
valueN = a1
sumN = a1
for i in range(1, n+1):
if i == 1:
print(f'1번째 항의 값: {a1}')
print(f'1번째 항까지의 합: {a1}')
continue
valueN *= r
sumN += valueN
print(f'{i}번째 항의 값: {valueN}')
print(f'{i}번째 항까지의 합: {sumN}')
seqMul(2, 3, 7)
>>>
1번째 항의 값: 2
1번째 항까지의 합: 2
2번째 항의 값: 6
2번째 항까지의 합: 8
(...)