普通参数与关键字参数

普通参数与关键字参数

“关键字参数”与常规参数有什么不同?不能把所有的参数都作为name=value而不是使用位置语法?



温温酱
浏览 850回答 3
3回答

胡说叔叔

有两个相关的概念,都被称为“关键字参数”。在调用端,也就是其他评论者所提到的,您可以通过名称指定一些函数参数。您必须在所有没有名称的参数(位置参数)之后提及它们,而且对于任何根本没有提到的参数,必须有默认值。另一个概念是函数定义方面的:您可以定义一个函数,它按名称接受参数-您甚至不需要指定这些名称是什么。这些都是纯关键字参数,不能在位置上传递。语法是def my_function(arg1, arg2, **kwargs)传递给该函数的任何关键字参数都将被放入名为kwargs的字典中。您可以在运行时检查本词典的键,如下所示:def my_function(**kwargs):     print str(kwargs)my_function(a=12, b="abc"){'a': 12, 'b': 'abc'}

汪汪一只猫

在最后一个语言特性中,区别是很重要的。考虑以下职能:def foo(*positional, **keywords):     print "Positional:", positional    print "Keywords:", keywords这个*positional参数将存储传递给foo()没有限制你能提供多少。>>> foo('one', 'two', 'three')Positional: ('one', 'two', 'three')Keywords: {}这个**keywords参数将存储任何关键字参数:>>> foo(a='one', b='two', c='three')Positional: ()Keywords: {'a': 'one', 'c': 'three', 'b': 'two'}当然,您可以同时使用:>>> foo('one','two',c='three',d='four')Positional: ('one', 'two')Keywords: {'c': 'three', 'd': 'four'}这些特性很少被使用,但有时它们非常有用,重要的是要知道哪些参数是位置参数还是关键字。

当年话下

使用关键字参数与普通参数是一样的,但顺序并不重要。例如,下面的两个函数调用是相同的:def foo(bar, baz):     passfoo(1, 2)foo(baz=2, bar=1)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python