导入另一个功能模块

时间:2015-02-02 04:48:21

标签: python

我导入了另一个文件,如何按顺序列出这些名称。我正在尝试如下

functions_list = [o for o in getmembers(unit7_conversion_methods) if isfunction(o[1])]
names_list = [o[0] for o in functions_list]

1 个答案:

答案 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]