我尝试了帮助(** kwargs),并帮助(kwargs)但收到错误。
有些在线网站向您展示了字典的所有可用方法,但是对于像kwargs这样不那么新手友好的东西都没有。
我要求一个通用的方法来查找内置的python信息,这样我就不必在线询问这些问题了。感谢。
例如,Edit_1,我是从其他人的代码中看到的:
def somefunction(**kwargs):
for key, value in kwargs.item():
print key, value
如何找到更多方法,如上例,item()?
答案 0 :(得分:2)
*kwargs
只是意味着一个方法需要多个未定义的关键字参数。
举个例子:
def foo(a,b,c=10,**kwargs):
pass
此方法有两个必需的位置参数,一个参数c
是可选的(因为它有一个默认值),然后接受任意数量的附加参数。所有这些都是有效的电话:
foo(1,2,hello='world',bar='baz')
foo(1,2,3,hello='world',bar='baz',zoo='foo')
由于它们是可变的,因此无法列出它们。
您可以做的最好的事情是使用内置的help()
函数,并希望程序员编写一些docstrings
来突出显示您感兴趣的函数的使用:
def foo(a,b,c=10,**kwargs):
'''This function takes extra arguments
that can be used to calculate the
meaning of life. The first two arguments
a and b are required, c is set to 10 as
a default.
Examples:
foo(1,2,hal='are you there?')'''
现在,当你执行help(foo)
时,它会打印出该字符串。
dir()
是另一种有用的内置功能。它返回传入对象的属性列表,或当前范围内可用的 names (变量)列表。
如果您想知道对象可以做的所有事情(基本上是.
之后的内容),请键入dir(theobject)
。例如,dir({})
将列出字典的所有属性。
答案 1 :(得分:0)
如果您正在寻找内置模块的文档,此链接可能有所帮助:http://effbot.org/librarybook/builtin.htm。您的问题并不具体,如果您添加更多详细信息,那就太棒了。
答案 2 :(得分:0)
kwargs 只是一个名字,**用于解包词典(kew words argument)
注意:kwargs可以是你喜欢的任何名字
关于kwargs的一点点:
>>> def foo(**new_kwargs):
... print new_kwargs
...
>>> dic = { 'key' : 'value' }
>>> foo(**dic)
{'key': 'value'}
>>>
>>> foo(key='value')
{'key': 'value'}
>>>
>>> foo(dic)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: foo() takes exactly 0 arguments (1 given)
>>>
并且:
如果要查看特定对象的所有属性和方法(即使类是python中的对象):使用dir built-in function
:
dir(...)
dir([object]) -> list of strings
如果你想看到任何特定的属性是方法或函数,你可以使用callable
来检查它们是否可以调用:
>>> dir(dict)
['__class__', '__cmp__', '__contains__', '__delattr__', '__delitem__', '__doc__',
'__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__',
'__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__',
'__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'has_key', 'items',
'iteritems', 'iterkeys', 'itervalues', 'keys', 'pop', 'popitem', 'setdefault',
'update', 'values', 'viewitems', 'viewkeys', 'viewvalues']
>>>
>>> callable(dict.keys)
True
>>>
>>> class foo(object):
... class_variable = 'Some String'
... def function():
... return 'Some String'
...
>>> dir(foo)
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__',
'__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__',
'__weakref__', 'class_variable', 'function']
>>>
>>> callable(foo.class_variable)
False
>>> callable(foo.function)
True
>>>
你在dir(foo)中显示的额外内容来自基类object
。