2
PyRun_String("if True: 1\nelse: 0", Py_eval_input, globals, globals);

PyErr_Print() 打印返回错误:

File "<string>", line 1
  if True: 1
   ^

我究竟做错了什么?谢谢你。

4

2 回答 2

4

这不是一个条件表达式:它是一个语句。Py_eval_input表示将字符串视为单个表达式。您可能希望Py_single_input将字符串视为语句。

这与 Python 代码中eval(这是您所要求的)和exec.

我当然假设您实际要执行的语句会稍微复杂一些,否则使用evalor没有多大意义exec。因为exec您需要确保它具有副作用,以便您可以告诉结果,例如通过将某些值绑定到名称。

于 2011-05-27T09:04:34.920 回答
0

确实如此,但您没有做任何会产生输出或返回值的事情。

考虑以下代码:

#!/usr/bin/python

def foo():
    if True: 1
    else: 0

a = foo()

print(a)

a 不会得到值 0 或 1 - 它将是“无”。

于 2011-05-27T09:04:57.990 回答