如何以交互方式打印(转储)一个列表~用户定义(未导入)的函数名称和定义?



回答: Python 可以打印函数定义吗?

这是怎么回事?

# Get a list of all user-defined functions and print  their definitions
import inspect, sys, types
# sys.stdout.write(inspect.getsource(MyFunction))
#
print(sorted([f.__name__ for f in globals().values() if type(f) == types.FunctionType]))
print()
for f in globals().values():
if type(f) == types.FunctionType:
## %pdef $f.__name__ is only the call signature 
print(inspect.getsource(f))

基于"遍历 globals() 字典"的这个答案,您可以将globals().values()类型转换为列表,以便您可以迭代它而不会出现错误RuntimeError: dictionary changed size during iteration,这是您的代码目前for f in globals().values():给出的。以下是合并的更改:

# Get a list of all user-defined functions and print  their definitions
import inspect, sys, types
# sys.stdout.write(inspect.getsource(MyFunction))
#
print(sorted([f.__name__ for f in globals().values() if type(f) == types.FunctionType]))
print()
for f in list(globals().values()):
if type(f) == types.FunctionType:
## %pdef $f.__name__ is only the call signature 
print(inspect.getsource(f))

通过运行代码并查看错误,然后搜索遍历全局的错误,找到了解决方案。因此,将来建议在发布时提供您看到的错误以及您期望的 @juanpa.arrivillaga 建议的内容。另外,请提供您已经尝试修复它的任何步骤。在这种情况下,您可能按照该过程自行对其进行了排序,因为它是建议的直接替换。诚然,在学习时,通常更难理解要搜索的内容以及如何有效地分类和实施这些发现。

最新更新