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
文字列をステートメントとして扱いたいと思うかもしれません。
eval
これは、Pythonコードの(これはあなたが求めていたものです)との違いと同じですexec
。
もちろん、実際に実行したいステートメントは少し複雑になると思います。そうでなければ、eval
またはを使用してもあまり意味がありませんexec
。たとえばexec
、名前に値をバインドするなどして結果を確認できるように、副作用があることを確認する必要があります。
ありますが、出力を生成したり、値を返したりするようなことは何もしていません。
次のコードを検討してください。
#!/usr/bin/python
def foo():
if True: 1
else: 0
a = foo()
print(a)
aは値0または1を取得しません-「なし」になります。