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