2024-09-26 18:19:44 发布
网友
对于测试驱动的教学模块,我需要按照精确的顺序检查博士学位。 有没有办法按照定义的顺序获取当前模块中的所有可调用项?你知道吗
我尝试的是:
每个函数对象都有一个存储第一个行号的代码对象,因此您可以使用:
import inspect ordered = sorted(inspect.getmembers(moduleobj, inspect.isfunction), key=lambda kv: kv[1].__code__.co_firstlineno)
获取(name, function)对的排序列表。对于Python2.5及更早版本,您需要使用.func_code而不是.__code__。你知道吗
(name, function)
.func_code
.__code__
您可能需要进一步筛选在模块本身中定义的、尚未导入的函数;func.__module__ == moduleobj.__name__应该足够了。你知道吗
func.__module__ == moduleobj.__name__
多亏了玛蒂恩,我终于找到了。 这是Python3的完整片段。你知道吗
import sys import inspect def f1(): "f1!" pass def f3(): "f3!" pass def f2(): "f2!" pass funcs = [elt[1] for elt in inspect.getmembers(sys.modules[__name__], inspect.isfunction)] ordered_funcs = sorted(funcs, key=lambda f: f.__code__.co_firstlineno) for f in ordered_funcs: print(f.__doc__)
每个函数对象都有一个存储第一个行号的代码对象,因此您可以使用:
获取
(name, function)
对的排序列表。对于Python2.5及更早版本,您需要使用.func_code
而不是.__code__
。你知道吗您可能需要进一步筛选在模块本身中定义的、尚未导入的函数;
func.__module__ == moduleobj.__name__
应该足够了。你知道吗多亏了玛蒂恩,我终于找到了。 这是Python3的完整片段。你知道吗
相关问题 更多 >
编程相关推荐