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

查找在模块中明确定义的函数(python)

年风华
2023-03-14
问题内容

好的,我知道您可以使用dir()方法列出模块中的所有内容,但是有什么方法只能查看该模块中定义的功能吗?例如,假设我的模块如下所示:

from datetime import date, datetime

def test():
    return "This is a real method"

即使我使用inspect()来过滤掉内置函数,我仍然剩下任何导入的内容。例如,我会看到:

[‘date’,’datetime’,’test’]

有什么办法可以排除进口?还是找出模块中定义的另一种方法?


问题答案:

您是否正在寻找这样的东西?

import sys, inspect

def is_mod_function(mod, func):
    return inspect.isfunction(func) and inspect.getmodule(func) == mod

def list_functions(mod):
    return [func.__name__ for func in mod.__dict__.itervalues() 
            if is_mod_function(mod, func)]


print 'functions in current module:\n', list_functions(sys.modules[__name__])
print 'functions in inspect module:\n', list_functions(inspect)

编辑:将变量名从“ meth”更改为“ func”以避免混淆(我们在这里处理函数,而不是方法)。



 类似资料:
  • 嘿,伙计们,现在我在自学PHP,但遇到了一个非常令人困惑的问题。在运行另一个文件时,如果在单独的文件中包含此代码,则会出现以下错误。 警告:C:\xampp\htdocs\MirrorTrade\classes\signup中未定义的数组键“first\u name”。php第26行警告:C:\xampp\htdocs\MirrorTrade\classes\signup中未定义的数组键“last

  • 问题内容: 这是我的代码: 我收到错误消息: 当我删除第一行时,我得到: 我到处搜索,人们到处都提到了Node.js的问题,但是我安装的Node是正确的,所以我不确定是什么问题。 问题答案: XMLHttpRequest是 Web浏览器中 的内置对象。 它不随Node一起分发;您必须单独安装它, 用npm安装 现在,您可以在代码中使用它。 var xhr = new XMLHttpRequest(

  • 更新到Glassish v.3.1.2.2后,我不断得到这个错误: 应用程序构建没有错误,使用 Maven Glassfish 插件进行部署: 响应: 找不到application.xml中定义的子模块[appname . war]。EAR部署失败。 当我在已部署的EAR文件夹中搜索Glassfish domain applications文件夹时,我看到了以下文件结构: 当我使用文本编辑器打开.

  • 问题内容: 我想将Mongoose模型分离到一个单独的文件中。我试图这样做: 然后,我尝试使用如下模型: 在单独的模块中引用模型是否合理? 问题答案: 基本方法看起来很合理。 作为一种选择,您可以考虑集成模型和控制器功能的“提供商”模块。这样,您可以让app.js实例化提供程序,然后可以执行所有控制器功能。app.js只需指定要实现的具有相应控制器功能的路由即可。 为了进一步整理,您还可以考虑使用

  • 我正在使用用于Python的VSCode以及VSCode中启用的适用于Python的微软扩展。 对于Python v3.9.0,如果我尝试寻找函数定义,则会发现找不到定义。 但是,如果我将Conda Virtual环境用于Python 3.7.0,我不会收到错误消息。 可能是什么问题?

  • 我正在使用Rcpp和另一个第三方C库开发一个包。当我试图安装包时,我得到了 在32位Windows操作系统中,根据我同事的建议,我通过将以下DLL的位置从MingW添加到系统路径,解决了这个问题。 但64位Windows,我得到相同的错误,即使与dll虽然我使用32位R。 所以我的问题是: 有没有办法知道为什么错误发生?我是说我想知道哪个模块不见了。也许冗长的选项在哪里?