“关键字参数”与常规参数有何不同?所有的参数不能被传递为name=value而不是使用位置语法吗?
当前回答
有两种方法将参数值赋给函数形参,这两种方法都被使用。
的位置。位置参数没有关键字,首先被赋值。 通过关键字。关键字参数具有关键字,并且在位置参数之后被赋值。
注意,您可以选择使用位置参数。
如果你不使用位置参数,那么——是的——你写的所有东西都变成了一个关键字参数。
当你调用一个函数时,你决定使用位置或关键字或两者的组合。如果你愿意,你可以选择做所有的关键字。我们中的一些人并没有做出这样的选择,而是使用位置参数。
其他回答
我很惊讶,似乎没有人指出可以传递一个键控参数字典,满足形式参数,就像这样。
>>> def func(a='a', b='b', c='c', **kwargs):
... print 'a:%s, b:%s, c:%s' % (a, b, c)
...
>>> func()
a:a, b:b, c:c
>>> func(**{'a' : 'z', 'b':'q', 'c':'v'})
a:z, b:q, c:v
>>>
我正在寻找一个使用类型注释的默认kwargs的示例:
def test_var_kwarg(a: str, b: str='B', c: str='', **kwargs) -> str:
return ' '.join([a, b, c, str(kwargs)])
例子:
>>> print(test_var_kwarg('A', c='okay'))
A B okay {}
>>> d = {'f': 'F', 'g': 'G'}
>>> print(test_var_kwarg('a', c='c', b='b', **d))
a b c {'f': 'F', 'g': 'G'}
>>> print(test_var_kwarg('a', 'b', 'c'))
a b c {}
有两种方法将参数值赋给函数形参,这两种方法都被使用。
的位置。位置参数没有关键字,首先被赋值。 通过关键字。关键字参数具有关键字,并且在位置参数之后被赋值。
注意,您可以选择使用位置参数。
如果你不使用位置参数,那么——是的——你写的所有东西都变成了一个关键字参数。
当你调用一个函数时,你决定使用位置或关键字或两者的组合。如果你愿意,你可以选择做所有的关键字。我们中的一些人并没有做出这样的选择,而是使用位置参数。
使用关键字参数与普通参数是一样的,只是顺序不重要。例如,下面两个函数调用是相同的:
def foo(bar, baz):
pass
foo(1, 2)
foo(baz=2, bar=1)
位置参数
它们前面没有关键词。顺序很重要!
func(1,2,3, "foo")
关键字参数
他们在前面有关键词。它们可以是任何顺序!
func(foo="bar", baz=5, hello=123)
func(baz=5, foo="bar", hello=123)
您还应该知道,如果您使用默认参数而忽略了插入关键字,那么顺序将会很重要!
def func(foo=1, baz=2, hello=3): ...
func("bar", 5, 123)
推荐文章
- Numpy Max vs amax vs maximum
- 我应该在.gitignore文件中添加Django迁移文件吗?
- 每n行有熊猫
- 实例属性attribute_name定义在__init__之外
- 如何获取在Python中捕获的异常的名称?
- 第一次出现的值大于现有值的Numpy
- 如何从Python函数中返回两个值?
- 前一个月的Python日期
- Python中方括号括起来的列表和圆括号括起来的列表有什么区别?
- Python日志记录不输出任何东西
- 每n秒运行特定代码
- SQLAlchemy是否有与Django的get_or_create等价的函数?
- 如何将python datetime转换为字符串,具有可读格式的日期?
- 美丽的汤和提取div及其内容的ID
- 在Python中重置生成器对象