2023. 8. 2. 15:18
파이썬
728x90
반응형
각 함수 안에 있는 global numFibCalls는 파이썬에게 numFibCalls가 모듈의 가장 바깥 영역에 정의되어야 함을 알려준다. 만약 global numFibCalls라는 코드가 없다면, 두 함수 모두에서 numFibCalls는 지역변수가 되었을 것이다. fib와 testFib 함수에서 numFibCalls가 참조하는 어떤 객체든지 아무런 제한없이 접근할 수 있다. testFib는 호출될 때마다 numFibCalls를 0에 바인딩하며, fib은 실행될 때마다 numFibCalls의 값을 1씩 증가시킨다.
# 전역 변수의 사용
def fib(x):
global numFibCalls
numFibCalls += 1
if x == 0 or x == 1:
return 1
else:
return fib(x-1) + fib(x-2)
def testFib(n):
for i in range(n+1):
global numFibCalls
numFibCalls = 0
print('fib of', i, '=', fib(i))
print('fib called', numFibCalls, 'times.')
print('testFib :', testFib(5))
출력결과
fib of 0 = 1
fib called 1 times.
fib of 1 = 1
fib called 1 times.
fib of 2 = 2
fib called 3 times.
fib of 3 = 3
fib called 5 times.
fib of 4 = 5
fib called 9 times.
fib of 5 = 8
fib called 15 times.
testFib : None
728x90
반응형
'파이썬' 카테고리의 다른 글
(파이썬) 파일을 생성한 다음 쓰기, 읽기, 덮어쓰기 (0) | 2023.08.02 |
---|---|
(파이썬) 모듈 (0) | 2023.08.02 |
(파이썬) 전역 변수의 사용 (0) | 2023.08.02 |
(파이썬) 피보나치 수열의 재귀적 구현 (0) | 2023.08.02 |
(파이썬) 피보나치 수열의 재귀적 구현 (0) | 2023.08.02 |