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文字列をステートメントとして扱いたいと思うかもしれません。

evalこれは、Pythonコードの(これはあなたが求めていたものです)との違いと同じですexec

もちろん、実際に実行したいステートメントは少し複雑になると思います。そうでなければ、evalまたはを使用してもあまり意味がありません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 に答える