Programming Language/Python
전역변수와 지역변수
1. 네임스페이스
1) 전역변수와 지역변수 차이
animal = 'cat' def change_local() : animal = 'dog' print animal, id(animal) change_local() print animal, id(animal)
+ 파이썬 함수 id()는 변수가 같거나 다름을 증명하기 위해 사용.
[실행결과]
dog 91508648
cat 73809792
2) 함수 내에서 전역변수 설정
animal = 'cat' def change_local() : global animal animal = 'dog' print animal, id(animal) change_local() print animal, id(animal)
[실행결과]
dog 102059944
dog 102059944
+ global 은 함수 내의 지역변수가 아닌 전역변수를 접근하기 위해 사용.
3) globals()와 locals()
animal = 'cat' def change_local() : #global animal animal = 'dog' print animal, id(animal) print locals() #현재 로컬 네임스페이스의 내용이 담긴 딕셔너리 반환 change_local() print animal, id(animal) print globals() #현재 글로벌 네임스페이스의 내용이 담긴 딕셔너리 반환
+ globals()에는 기본으로 현재 파일위치, 패키지 등의 정보가 있어
생각한 것과 같이 내가 설정한 전역변수만 출력되지는 않음
[실행결과]
dog 100683488
{'animal': 'dog'}
cat 84754304
{'__file__': 'F:\\\xb9\xd9\xc5\xc1\xc8\xad\xb8\xe9\\test.py', 'animal': 'cat' }
댓글