我导入了另一个文件,如何按顺序列出这些名称。我正在尝试如下
functions_list = [o for o in getmembers(unit7_conversion_methods) if isfunction(o[1])]
names_list = [o[0] for o in functions_list]
答案 0 :(得分:4)
您似乎已经完成了from inspect import *
,但没有以最佳方式使用inspect
(尽管如果我对导入的猜测是正确的,您的代码应该可以正常工作)。
namelist = [name
for name, _ in getmembers(unit7_conversion_methods, isfunction)]
会相同但更快。 然而,你会说“按照它们出现的顺序”(可能是它们出现在模块中的文字顺序),并且不会发生 - 作为{ {3}}说,会员返回按名称排序。
但等等 - 不是所有的都丢失了!函数对象具有func_code
属性,代码对象又具有co_firstlineno
属性,模块中定义它的函数的第一行号。
因此,您可以按 排序 - 并按照它们在模块中出现的顺序获取函数名称,如您所要求的那样。
nflist = getmembers(unit7_conversion_methods, isfunction)
def firstline(nf):
return nf[1].func_code.co_firstlineno
nflist.sort(key=firstline)
nameslist = [n for n, _ in nflist]