【问题标题】:Executing external python code without changing original variables在不更改原始变量的情况下执行外部 python 代码
【发布时间】:2022-07-19 19:55:35
【问题描述】:

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

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

输出:
99
99

我正在执行的代码更改了我原始程序中的变量 i。我可以使用什么替代方法来执行外部 python 代码来阻止这一点?考虑到我正在执行的代码是以字符串形式提供给我的,我无法控制它或其变量名。

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

【问题讨论】:

  • 这是非常不安全的,你不应该盲目地以这种方式执行代码,尤其是其中一个原因,因为你刚刚发现的行为

标签: python


【解决方案1】:

你的代码:

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

Output:
99
99

逐行执行:

新代码:

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

Output:
99
0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 2020-08-28
    • 2019-10-26
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多