반응형
출처:http://egloos.zum.com/mcchae/v/11025548
파이썬에서도 다른 언어처럼 global 개념이 있지만 약간은 틀리더군요.
다음을 보겠습니다.
GV=10
def gTestA():
i = GV
j = GV+1
print i + j
위 상태에서
gTestA()
를 수행하면
21
결과를 보여주고 정상 종료 됩니다.
클래스도 보겠습니다.
GV=10
class myClass:
myGV = GV
def __init__(self):
self.myGV = 5
def mA(self):
i = self.myGV
j = myClass.myGV
print i + j
my = myClass()
my.mA()
15
즉, namespace에서 모듈의 global 은 어디서든지 read-only 개념으로 참조가 가능합니다.
하지만 아래의 경우를 보겠습니다.
GV=10
def gTestB():
GV += 1
print GV
gTestB()
수행을 하면,
Traceback (most recent call last):
File "/home/toor/workpy/SMCLinux/test/global_test.py", line 5, in <module>
gTestB()
File "/home/toor/workpy/SMCLinux/test/global_test.py", line 3, in gTestB
GV += 1
UnboundLocalError: local variable 'GV' referenced before assignment
와 같은 오류가 발생하는 군요.
즉, readonly가 아니라 참조를 하려는데 로컬 변수 사전에서 못 찾는다는 것이겠지요.
GV +=1 윗줄에
global GV
라는 것을 주면 global 사전에 GV가 추가되고, 글로벌 변수를 이용하여
값을 변경하는 것도 가능합니다.
GV=10
def gTestB():
global GV
GV += 1
print GV
gTestB()
어느분께는 도움이 되셨기를 바랍니다.
반응형
'IT기술 관련 > 파이썬_루비 등 언어' 카테고리의 다른 글
[Python] 반복문 맨 마지막 배열 뽑아내기 (1) | 2015.11.30 |
---|---|
[Python] MySQL 쿼리 값은 정상인데 DB에 데이터 안들어가는 경우 (0) | 2015.11.30 |
[Python] 파이썬 tail 구현 (0) | 2015.11.30 |
[Python] pip 설치 (0) | 2015.11.28 |
[루비] 숫자를 문자로, 문자를 숫자로 바꾸기 (0) | 2015.11.18 |