함수는 범위 밖의 변수를 참조 할 수 있지만 설정할 수는 없습니다. 이 올바른지? 나는이 권리를 이해하고 있는가?간단한 파이썬 변수 범위
나는 또한 전역 사용을 포함했습니다. 나는 그들이 나쁜 주주이며 그들을 피할 것이라는 것을 안다. 이 문제를 해결하는 방법을 알고 있지만, 그냥 명확히하고 싶었습니다.
내 예제 프로그램 :
import foo
# beginning of functions
# this one works because I look at the variable but dont modify it
def do_something_working:
if flag_to_do_something:
print "I did it"
# this one does not work because I modify the var
def do_something_not_working:
if flag_to_do_something:
print "I did it"
flag_to_do_something = 0
# this one works, but if I do this God kills a kitten
def do_something_using_globals_working_bad_ju_ju:
global flag_to_do_something
if flag_to_do_something:
print "I did it"
flag_to_do_something = 0
# end of functions
flag_to_do_something = 1
do_something_working()
do_something_not_working()
do_something_using_globals_working_bad_ju_ju()
내가 볼 아. 그래서 비 목록 변수를 제거하는 것과 같은 것이 있습니까? flag_to_do_something.set (0) 처럼요? –
아니요, * 변수 * (이름 일뿐입니다), * 객체 * 만 변경할 수는 없습니다. 그리고 int 같은 불변 객체는 변이 될 수 없습니다. 그러나 함수 내에서'global' 선언을 사용하여 전역 변수에 할당 할 수 있습니다 :'global flag_to_do_something; flag_to_do_something = 0'. –