2015-09-04 53 views
0

我在命令提示符下使用IPython的,Windows 7的如何获得的参数完整列表功能从模块在Python

我想这是很容易找到,我搜索,发现关于如何使用方向检查包,但它看起来像检查包是用于由程序员创建的函数,而不是作为包的一部分的函数。

我的主要目标是能够从iPython的命令提示符中使用帮助文件,以便能够查找函数(如csv.reader())并找出所有可能的参数和所有可能的参数这些争论的价值。

一个R编程,这将仅仅是ARGS(csv.reader())

我曾试着用搜索引擎这一点,但他们都指向我的包进行检查,也许是我误解它的使用?

例如,

如果我想看到的所有可能的参数列表和相应的可能的这些参数的csv.reader()函数的值(从导入CSV包),我将如何去关于这样做?

我试过做的帮助(csv.reader),但这并没有提供我所有可能的参数和它们的潜在值的列表。 '方言'出现,但它不告诉我csv.reader函数的方言参数的可能值。

我可以很容易地去的网站:并看到方言选项是:分隔符,双引号,escapechar等.. etc ..但有没有办法在Python控制台中看到这个?

我也试过dir(csv.reader),但这不是我正在寻找的。

秃顶试图弄清楚这一点....

+1

我不认为这是一个编程问题,因为对文档的普遍沮丧。 'help'打印并格式化[docstrings](https://www.python.org/dev/peps/pep-0257/),这些文件只与他们写的一样有帮助。在Python中没有通用的解决方案来显示“所有可能的参数”和“所有参数的所有可能的值”,因为在许多情况下甚至不能枚举(例如[variadic functions](https://en.wikipedia.org/wiki/Variadic_function))。 –

+0

图书馆中几乎所有的文档都是直接来自DocStrings:'help(csv.Dialect)'会给你你正在寻找的细节,不幸的是,正如指出的那样,该帮助只有'csv的文档字符串和文档字符串.reader'没有明确指出你'csv.Dialect'。然后,您可以查看特定的方言,例如'帮助(csv.excel)'。对参数的反省并没有告诉你有效的值是什么,所以我看不出这会有什么帮助。 – AChampion

回答

1

没有办法一般做到这一点,help(<function>)将在最低回报你的函数签名(包括参数名称),Python是动态类型等等你自己不会得到任何类型和参数,也不会告诉你有效值是什么。这是一个很好的文档字符串进来

然而,csv模块确实具有特定功能的上市方言:

>>> csv.list_dialects() 
['excel', 'excel-tab', 'unix'] 
>>> help(csv.excel) 
Help on class excel in module csv: 

class excel(Dialect) 
| Describe the usual properties of Excel-generated CSV files. 
... 
0

的检查模块是非常强大的。要获得类别列表,例如在csv模块中,您可以执行以下操作:

import inspect, csv 
from pprint import pprint 

module = csv 
mod_string = 'csv' 
module_classes = inspect.getmembers(module, inspect.isclass) 
for i in range(len(module_classes)): 
    myclass = module_classes[i][0] 
    myclass = mod_string+'.'+myclass 
    myclass = eval(myclass) 
    # could construct whatever query you want about this class here... 
    # you'll need to play with this line to get what you want; it will failasis 
    #line = inspect.formatargspect(*inspect.getfullargspec(myclass)) 
    pprint(myclass) 

希望这能帮助您入门!

+0

如果没有inspect模块,你能不能做大部分的工作:'[x for csv .__ dict__ if isinstance(csv .__ dict __ [x],csv.Dialect .__ class __]]''返回一个已经继承的类的列表从'csv.Dialect'。 – AChampion

+0

对于module_functions我可以去'module_functions = inspect.getmembers(module,inspect.isfunction)'和'line =“def”+ func + inspect.formatargspec(* inspect.getfullargspect(myfunc))'尝试使用类似SMTP模块或线程来自线程 –

+0

取决于他实际需要什么。但很明显他对我认为的检查并不熟悉。通过检查,您实际上可以为每个类生成一个构造函数列表。如果你的解决方案给了他他需要的东西,那很好。如果他需要更多,那么也许他可以更深入地检查。 –

相关问题