我的系统上安装了一个Python模块,我希望能够看到其中有哪些函数/类/方法可用。
我想对每一个都调用帮助函数。在Ruby中,我可以做一些类似ClassName的事情。方法获取该类上所有可用方法的列表。Python中有类似的东西吗?
例如:
from somemodule import foo
print(foo.methods) # or whatever is the correct method to call
我的系统上安装了一个Python模块,我希望能够看到其中有哪些函数/类/方法可用。
我想对每一个都调用帮助函数。在Ruby中,我可以做一些类似ClassName的事情。方法获取该类上所有可用方法的列表。Python中有类似的东西吗?
例如:
from somemodule import foo
print(foo.methods) # or whatever is the correct method to call
当前回答
您可以使用dir(module)查看所有可用的方法/属性。也可以看看PyDocs。
其他回答
如果你不能在没有导入错误的情况下导入上述Python文件,这些答案都不会起作用。当我检查一个来自大量依赖的大型代码库的文件时,我就遇到了这种情况。下面的代码将把文件作为文本处理,搜索所有以“def”开头的方法名,并打印它们及其行号。
import re
pattern = re.compile("def (.*)\(")
for i, line in enumerate(open('Example.py')):
for match in re.finditer(pattern, line):
print '%s: %s' % (i+1, match.groups()[0])
r = globals()
sep = '\n'+100*'*'+'\n' # To make it clean to read.
for k in list(r.keys()):
try:
if str(type(r[k])).count('function'):
print(sep+k + ' : \n' + str(r[k].__doc__))
except Exception as e:
print(e)
输出:
******************************************************************************************
GetNumberOfWordsInTextFile :
Calcule et retourne le nombre de mots d'un fichier texte
:param path_: le chemin du fichier à analyser
:return: le nombre de mots du fichier
******************************************************************************************
write_in :
Ecrit les donnees (2nd arg) dans un fichier txt (path en 1st arg) en mode a,
:param path_: le path du fichier texte
:param data_: la liste des données à écrire ou un bloc texte directement
:return: None
******************************************************************************************
write_in_as_w :
Ecrit les donnees (2nd arg) dans un fichier txt (path en 1st arg) en mode w,
:param path_: le path du fichier texte
:param data_: la liste des données à écrire ou un bloc texte directement
:return: None
Python文档提供了使用内置函数dir的完美解决方案。
您可以只使用dir(module_name),然后它将返回该模块中的函数列表。
例如,dir(time)将返回
[' _STRUCT_TM_ITEMS’,‘__doc__’,‘__loader__’,‘__name__’,‘__package__’,‘__spec__’,‘altzone’,‘asctime’,‘ctime’,‘阳光’,‘get_clock_info’,‘gmtime’,‘作用’,‘mktime’,‘单调’,‘monotonic_ns’,‘perf_counter’,‘perf_counter_ns’,‘process_time’,‘process_time_ns’,‘睡眠’,‘strftime’,‘strptime’,‘struct_time’,‘时间’,‘time_ns’,“时区”,“tzname”,“tzset”)
它是'time'模块包含的函数列表。
一旦你导入了模块,你可以这样做:
help(modulename)
... 以交互方式一次性获得所有函数的文档。或者你可以用:
dir(modulename)
... 简单地列出模块中定义的所有函数和变量的名称。
使用vars(module),然后使用inspect.isfunction过滤掉任何不是函数的东西:
import inspect
import my_module
my_module_functions = [f for _, f in vars(my_module).values() if inspect.isfunction(f)]
vars相对于dir或inspect的优势。Getmembers是按函数定义的顺序返回函数,而不是按字母顺序排序。
此外,这将包括my_module导入的函数,如果你想过滤掉它们,只获得my_module中定义的函数,请参阅我的问题获取Python模块中所有已定义的函数。