1
誰も私にこの行動に関するアドバイスを与えることができますか?次のコードは正常に動作:Python ASTノードを関数内で実行することはできません
import ast
node = ast.parse('def nsd(a, b):\n if b == 0: return a \n return nsd(b, a%b)\n\nprint nsd(18,15)')
obj = compile(node, filename="<ast>", mode="exec")
exec obj
しかし、私は関数内に同じ操作を行います。
import ast
def foo():
node = ast.parse('def nsd(a, b):\n if b == 0: return a \n return nsd(b, a%b)\n\nprint nsd(18,15)')
obj = compile(node, filename="<ast>", mode="exec")
exec obj
foo()
それはエラー発生します
Traceback (most recent call last):
File "C:/Users/Vectoun/PycharmProjects/untitled3/test.py", line 9, in <module>
foo()
File "C:/Users/Vectoun/PycharmProjects/untitled3/test.py", line 7, in foo
exec obj
File "<ast>", line 5, in <module>
File "<ast>", line 3, in nsd
NameError: global name 'nsd' is not defined
私が実行できるようにしたいと思いますがこれは関数内にあります。誰もこれを解決する方法を知っていますか?
感謝を! – vecta