gpt4 book ai didi

python - 无法使用 Python 中的检查通过 exec 获取方法 "declared"的源代码

转载 作者:太空狗 更新时间:2023-10-30 00:46:03 25 4
gpt4 key购买 nike

以下代码抛出异常:

import inspect

def work():
my_function_code = """def print_hello():
print('Hi!')
"""
exec(my_function_code, globals())
inspect.getsource(print_hello)

上面的代码抛出异常 IOError。如果我在不使用 exec 的情况下声明函数(如下所示),我可以获得它的源代码就好了。

import inspect

def work():
def print_hello():
print('Hi!')
inspect.getsource(print_hello)

我有充分的理由做这样的事情。

有解决办法吗?有可能做这样的事情吗?如果不是,为什么?

最佳答案

我刚刚查看了 inspect.py阅读@jsbueno 的回答后的文件,这是我发现的:

def findsource(object):
"""Return the entire source file and starting line number for an object.

The argument may be a module, class, method, function, traceback, frame,
or code object. The source code is returned as a list of all the lines
in the file and the line number indexes a line in that list. An **IOError
is raised if the source code cannot be retrieved.**"""
try:
file = open(getsourcefile(object))
except (TypeError, IOError):
raise IOError, 'could not get source code'
lines = file.readlines() #reads the file
file.close()

它清楚地表明它试图打开源文件然后读取它的内容,这就是为什么在 exec 的情况下是不可能的。

关于python - 无法使用 Python 中的检查通过 exec 获取方法 "declared"的源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12072252/

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