기본 변수로 사용하고있는 전역 변수가 있습니다. 내 프로그램에서 무슨 일이 일어나는지에 따라 이러한 기본값을 변경하고 코드의 나머지 작업을 통해 변경 사항을 유지할 수 있어야합니다. 나는 그들이 전역 변수를 사용하여 어디서나 변경되고 정의되기를 바란다. 다음은 이러한 변수를 수정하는 방법을 보여주는 테스트 코드입니다.파이썬의 전역 변수 혼동
내가이 작업을 수행 할 때 나는 다음과 같은 문제가 ...
- 이 프로그램은
myGlobal
메인에 정의되지 않았 음을 생각한다. 그러나 이 있습니다. 왜? myGlobal
을 변경 한 후 서브 루틴을 호출 할 때. 나는 그런 일이 일어나기를 원하지 않았다.
여기서 수행하려는 작업을 수행하는 올바른 방법은 무엇입니까? 예?
def main(argv):
global myGlobal
#...
myGlobal = "bar"
그렇지 않으면 할당 그냥 새로운 생성됩니다 : 당신이을 할당하는 대신 함수 내에서 모듈 전역 변수를 읽어 하려면
#!/usr/bin/python
import sys
myGlobal = "foo"
print "********************"
print "MyGlobal %s" % myGlobal
print "********************"
def main(argv):
#UnboundLocalError: local variable 'myGlobal' referenced before assignment
print '1. Printing the global again: ' + myGlobal
myGlobal = "bar"
print "2. Change the global and print again: " + myGlobal
# now call a subroutine
mySub()
# Checks for output file, if it doesn't exist creates one
def mySub():
# Why isn't the global "bar" not "foo"?
print '3. Printing the global again: ' + myGlobal
myGlobal = "black sheep"
print "4. Change the global and print again: " + myGlobal
if __name__ == "__main__":
main(sys.argv[1:])