当前位置: 首页 > 面试题库 >

是否可以列出模块中的所有功能?

莫宁
2023-03-14
问题内容

我以这种格式定义了一个.py文件:

foo.py

def foo1(): pass
def foo2(): pass
def foo3(): pass

我从另一个文件导入它:

main.py

from foo import * 
# or
import foo

是否可以列出所有功能名称,例如["foo1", "foo2", "foo3"]

感谢您的帮助,我为我想要的课程做了一堂课,如果有建议请发表评论

class GetFuncViaStr(object):
    def __init__(self):
        d = {}
        import foo
        for y in [getattr(foo, x) for x in dir(foo)]:
            if callable(y):
               d[y.__name__] = y
    def __getattr__(self, val) :
        if not val in self.d :
           raise NotImplementedError
        else:
           return d[val]

问题答案:

做这些事情的最干净的方法是使用检查模块。它具有getmembers将谓词作为第二个参数的函数。您可以isfunction用作谓词。

 import inspect

 all_functions = inspect.getmembers(module, inspect.isfunction)

现在,all_functions将是一个元组列表,其中第一个元素是函数的名称,第二个元素是函数本身。



 类似资料:
  • 问题内容: 我的系统上安装了python模块,我希望能够看到其中提供了哪些函数/类/方法。 我想在每个函数上调用doc函数。在ruby中,我可以执行类似ClassName.methods之类的操作来获取该类上所有可用方法的列表。python中是否有类似的东西? 例如。就像是: 问题答案: 该模块。另请参阅模块,交互式解释器中的功能以及生成所需文档的命令行工具。你可以为他们提供希望查看其文档的课程。

  • 我正在做一个小的应用程序,可以列出所有的功能和帮助文档从给定的模块名和函数名。只需练习我的技能。 在我创建和entrybox之后,从user获取作为模块名的输入,并通过以下代码导入: 然后,我尝试使用列出所有函数名。但是我发现函数必须在导入后直接应用到模块名,例如:或。当模块名是一个变量时,是否有任何工作方法来列出所有的函数?

  • 问题内容: 我使用OSGI,这是我要禁用模块的主要原因,因为我真的不需要其他模块框架。是否可以这样做,例如使用命令行选项?如果是,那怎么办? 问题答案: 没有关闭模块系统的选项-它将始终处于活动状态。这会影响对JDK内部API的访问,对Java EE模块的依赖,Split软件包以及许多其他小细节 。如果您希望应用程序在Java 9上运行,则代码和依赖项必须应对这些迁移挑战。 但是,您绝不被迫创建模

  • 问题内容: 我有一个需要一些模块。有没有办法可以注入模块本身?我意识到这有点麻烦。 例: 我想在这种情况下,解决方案是将方法转换为完整的类。这显然是一个简化的示例;我正在处理的代码有很多这样的方法,因此将它们分成单独的类并引入配置它们的模块会增加相当多的混乱- 我认为Guice就是要减少样板混乱? 也许这反映了我对Guice的相对呆板,但是我遇到了很多尝试着做上述事情的案例。我肯定错过了什么… 问

  • 问题内容: 使用ES6,我可以从这样的文件导入多个导出: 但是,我喜欢每个文件有一个模块的组织。我最终得到这样的进口: 我希望能够做到这一点: 或类似的名称,并且每个文件都包含一个默认导出,并且每个模块的名称与其文件相同。 这可能吗? 问题答案: 我认为这不可能,但是模块名称的解析取决于模块加载器,因此可能有支持此功能的加载器实现。 在此之前,您可以使用仅包含以下内容的中间“模块文件” 它会让你做

  • 使用ES6,我可以从以下文件导入多个导出: 但是,我喜欢每个文件有一个模块的组织。我最终得到了这样的导入: 我很想能够做到这一点: 或者类似的东西,可以理解为每个文件包含一个默认导出,每个模块的名称与其文件相同。 这可能吗?