gpt4 book ai didi

python - Python 中的 AST 操作

转载 作者:行者123 更新时间:2023-11-28 16:37:04 26 4
gpt4 key购买 nike

我希望能够(只是出于娱乐和教学目的)修改函数的 AST,只是为了更改应该打印出来的字符串。

现在经过一些实验后,我认为像这样的东西应该可以工作,但是即使没有错误,第二个函数也不会打印任何东西。

知道我遗漏了什么吗?(第二个函数基本上应该只打印“world”而不是“hello world”)。

def function_hello():
print('hello world')


def remove_hello():
import ast
import inspect
source = inspect.getsource(function_hello)
ast_tree = ast.parse(source)
st = ast_tree.body[0].body[0].value.args[0]
st.s = st.s.replace('hello ', '')
return compile(ast_tree, __file__, mode='exec')


if __name__ == '__main__':
function_hello()
exec(remove_hello())

最佳答案

执行编译后的代码会覆盖函数 function_hello(而不是调用它)。您需要调用 function_hello() 来查看您想要的内容。

if __name__ == '__main__':
function_hello()
exec(remove_hello()) # This does not call the function.
function_hello() # <-----------

关于python - Python 中的 AST 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24724333/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com