PyRun_String("if True: 1\nelse: 0", Py_eval_input, globals, globals);
PyErr_Print() 打印返回错误:
File "<string>", line 1
if True: 1
^
我究竟做错了什么?谢谢你。
PyRun_String("if True: 1\nelse: 0", Py_eval_input, globals, globals);
PyErr_Print() 打印返回错误:
File "<string>", line 1
if True: 1
^
我究竟做错了什么?谢谢你。
这不是一个条件表达式:它是一个语句。Py_eval_input
表示将字符串视为单个表达式。您可能希望Py_single_input
将字符串视为语句。
这与 Python 代码中eval
(这是您所要求的)和exec
.
我当然假设您实际要执行的语句会稍微复杂一些,否则使用eval
or没有多大意义exec
。因为exec
您需要确保它具有副作用,以便您可以告诉结果,例如通过将某些值绑定到名称。
确实如此,但您没有做任何会产生输出或返回值的事情。
考虑以下代码:
#!/usr/bin/python
def foo():
if True: 1
else: 0
a = foo()
print(a)
a 不会得到值 0 或 1 - 它将是“无”。