执行外部python代码而不改变原始变量



使用exec()方法执行外部python代码时:

i = 0
exec("i = 99nprint(i)")
print(i)

输出:
99
99

我正在执行的代码更改了变量I在我原来的节目里。执行外部python代码的其他方法可以阻止这种情况吗?考虑一下,我正在执行的代码是作为字符串提供给我的,我无法控制它或它的变量名。

执行相同代码时期望输出:
99
0

尽管我认识到这种方法的不安全性,但HALF9000在注释中提供了一种适合我需要的方法。在exec方法中设置全局和局部变量为空解决了我的问题:

i = 0
exec("i = 99nprint(i)",{},{})
print(i)

输出:
99
0

您的代码:

i = 0       #i=0
exec("i = 99nprint(i)")     #i=99
print(i)                     #i=99
Output:
99
99

逐行执行:

新代码:

exec("i = 99nprint(i)")            #i=99
i = 0                               #i=0
print(i)                            #i=0  
Output:
99
0

解释:Python逐行执行代码,在你的代码中,你声明0,然后更新值99,然后打印2次,如果你想要输出,那么你可以初始化99并先打印它,然后再初始化0。

相关内容

  • 没有找到相关文章

最新更新