gpt4 book ai didi

python - 编译/执行未能在它自己的范围内分配值,导致内部语法错误

转载 作者:太空宇宙 更新时间:2023-11-04 11:09:09 26 4
gpt4 key购买 nike

我的 python 正在做一些奇怪的事情。我正在尝试使用 exec/eval/compile 从字符串形式执行一些代码。特别是 exec,但由于语法错误而无声地失败,所以我改用 eval。

#start of document

print( compile( 'Test_val = 1;', 'None', 'eval' ) )

Traceback (most recent call last):
File "/Users/lucasyoung/Desktop/Application/__init__.py", line 6, in <module>
print( compile( 'Test_val = 1;', 'None', 'eval' ) )
File "None", line 1
Test_val = 1;
^

我做了一些测试,例如,我可以通过编译调用打印语句。我可以调用变量存在,但我似乎无法命名它们。奇怪的是,这在编译代码自身上下文的范围内。

我知道堆栈对超详细问题有很大的坚持,但老实说我只是不知道该说些什么。 Exec 应该从字符串中触发一些代码。我调用的代码完全有效。我很难过。

最佳答案

首先eval()和exec()有区别

eval() :eval() 方法返回从表达式求得的结果。

eval 函数对单个表达式执行相同的操作,并返回表达式的值:

exec() : exec() 不返回任何值,它返回 None。

exec 函数(Python 2 中的语句)用于执行动态创建的语句或程序:

因此

eval('Test_val = 1;') 不是有效的 eval 表达式。

exec('test_val = 1;') 是 exec 的有效表达式

对于你的情况,你应该使用

print( compile( 'Test_val = 1;', 'None', 'exec' ) )

请查看What's the difference between eval, exec, and compile?了解更多信息

关于python - 编译/执行未能在它自己的范围内分配值,导致内部语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58718838/

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