gpt4 book ai didi

Python eval 在函数内部不起作用

转载 作者:太空狗 更新时间:2023-10-29 21:52:10 26 4
gpt4 key购买 nike

<分区>

为什么 Python 的 eval 在函数内部不起作用?相同的 eval(compile(cmd)) 代码在全局环境中工作,但在 foo 函数内部不起作用。

简单的例子:

fn = '/tmp/tmp'
mode = 'single'

def foo(cmd, fn, mode):
eval(compile(cmd, fn, mode)) # <<< this does not work
print 'foo: cmd=', cmd
print 'foo: x=', x

cmd = "x = 1"
eval(compile(cmd, fn, mode)) # <<< this works
print 'global scope: cmd=', cmd
print 'global scope: x=', x

del(x)
foo('x = 9', fn, mode)

这是输出和错误信息:

global scope: cmd= x = 1
global scope: x= 1
foo: cmd= x = 9
foo: x=
Traceback (most recent call last):
File "ctest.py", line 20, in <module>
foo('x = 9', fn, mode)
File "ctest.py", line 12, in foo
print 'foo: x=', x
NameError: global name 'x' is not defined

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com