아래 코드는 문제를 완전히 설명한다고 생각합니다. Test2 함수에서 x가 정의되지 않은 이유는 무엇입니까? Test3 함수가 오류를 반환하지 않는 이유는 무엇입니까? 기능 Test2
에서파이썬의 exec 함수의 이상한 동작
>>> def Test1():
exec('x=2')
print(str(x))
>>> Test1()
2
>>> def Test2():
global x
exec('x=2')
print(str(x))
>>> Test2()
Traceback (most recent call last):
File "<pyshell#39>", line 1, in <module>
Test2()
File "<pyshell#38>", line 4, in Test2
print(str(x))
NameError: global name 'x' is not defined
>>> def Test3():
global x
x=2
print(str(x))
>>> Test3()
2
무엇을하려하십니까? 'global'을 사용하지 말고'exec'를 사용하지 마십시오; 그들은 잘못 설계된 코드로 이어지고,'exec'의 경우 안전하지 않은 코드로 이어집니다. –
txt 파일에서 사전 기반의 데이터베이스를로드하려고했습니다. –
그래, 그러지 마. 대신 데이터베이스를 JSON으로 저장하고'mydata = json.load (open ('mydb.txt'))'와 같이로드하시오. –