실행중인 코드 로컬 x가 전역을 덮어 쓰지 않는 이유 엑스?
x = 'global x'
def test():
global x
x = 'local x'
print(x)
print(x)
test()
산출:
global x
local x
실행중인 코드 로컬 x가 전역을 덮어 쓰지 않는 이유 엑스?
x = 'global x'
def test():
global x
x = 'local x'
print(x)
print(x)
test()
산출:
global x
local x
그렇다고 생각합니다. 먼저 전역 x 인 x를 print합니다. 그 후 test를 호출하고 함수 끝에 로컬 x를 print합니다. 함수를 정의한다고해서 호출되는 것은 아닙니다.비 테스트 함수로 전역 x를 덮어 쓰려면 다음을 시도하십시오.
test()
print(x)
대신에
print(x)
test()
test
함수가 호출되기 전에 x = 'global x'
는 문제가되지 않습니다.
당신이 원하는 것 같아요
x = 'global x'
def test():
global x
x = 'local x'
print(x)
print(x) # Before test call, x = 'global x'
test() # test called, x = 'local x'
print(x) # test called, x overwriting, x = 'local x'
함수 호출 후에 만 변수를 교체하고 테스트를 교체하고 마지막 두 줄을 print (x)하면 마법을 볼 수 있습니다.
x = 'global x'
def test():
global x
x = 'local x'
print(x)
test()
print(x)
내가 실행하는 코드는 왜 로컬 x가 전역 x를 덮어 쓰지 않습니까?
함수 코드는 호출 할 때까지 실행되지 않습니다. 다음은 script의 이벤트 순서입니다.
x
는 값이 global x
인 str
유형의 객체를 저장하여 선언됩니다.test
함수의 정의를 파싱하지만 실행하지는 않습니다.print
를 사용하여 x
의 값을 print합니다.x
를 local x
로 설정합니다.print하기 전에 변수 x
의 값을 변경하려는 경우. 이 작업을 수행:
x = 'global x'
def test():
global x
x = 'local x'
print(x)
print("Value of x before test:", x)
test()
print("Value of x after test:", x)
출력 :
Value of x before test: global x
local x
Value of x after test: local x
출처 : https://stackoverflow.com/questions/63048488/why-isnt-my-local-variable-overwriting-the-global