我一直在玩inspect
Python 标准库中的模块。
下面的例子工作得很好(假设inspect
已导入):
def foo(x, y):
return x - y
print(inspect.getsource(foo))
...将打印def foo(x, y):\n return x - y\n
and ...
bar = lambda x, y: x / y
print(inspect.getsource(bar))
...将打印bar = lambda x, y: x / y\n
。到目前为止,一切都很好。然而,在下面的例子中事情变得有点奇怪:
print(inspect.getsource(lambda x, y: x / y))
...将打印print(inspect.getsource(lambda x, y: x / y))
and ...
baz = [2, 3, lambda x, y: x / y, 5]
print(inspect.getsource(baz[2]))
...将打印baz = [2, 3, lambda x, y: x / y, 5]
.
该模式似乎是所有相关的源代码lines无论上下文如何,都会返回getsource
。这些行中的其他所有内容(在我的例子中,除了所需的函数源/定义之外)也包括在内。是否有另一种“替代”方法,它允许提取代表函数源代码的内容 - 并且仅代表其源代码 - 最好以某种匿名方式?
EDIT (1)
def foo(x, y):
return x - y
bar = [1, 2, foo, 4]
print(inspect.getsource(bar[2]))
...将打印def foo(x, y):\n return x - y\n
.