我正在学习python中的函数,并找到了许多关于函数及其类型的好教程和答案,但我在某些地方感到困惑。我已阅读以下内容:
如果函数有"="
,则它是关键字参数,即(a,b=2)
如果函数没有"="
那么它就是位置参数,即(a,b)
我的怀疑:
必需参数和可选参数的含义是什么?默认参数也是关键字参数吗? (因为两者都包含“=”)
位置,关键字,可选和必需之间的差异 参数
python官方文档说有两种类型的参数。如果是,那么*args and **kargs
是什么(我知道它们是如何工作但不知道它们是什么)
*args
和**kargs
如何存储值?我知道*args
和。{
**kargs
有效,但它们如何存储价值? *args
是否存储值
字典中的元组和**kargs
?
请深入解释。我想了解功能,因为我是新手:)
提前致谢
答案 0 :(得分:2)
让我们设想一个函数,
def function(a, b, c):
print a
print b
print c
以这种方式将位置参数传递给函数。
function("position1", "position2", "position3")
将打印
position1
position2
position3
但是,你可以传递一个关键字参数,如下所示,
function(c="1",a="2",b="3")
,输出将变为:
2
3
1
输入不再基于参数的位置,但现在它基于关键字。
b 在(a,b = 2)中是可选的原因是因为您给它一个默认值。
这意味着如果您只为该函数提供一个参数,它将应用于 a 。必须在函数定义中设置默认值。这样,当您从函数调用中省略参数时,默认值将应用于该变量。通过这种方式,它变成了可选的'传入该变量。
例如:
def function(a, b=10, c=5):
print a
print b
print c
function(1)
,输出将变为:
1
10
5
这是因为您没有为 b 或 c 提供参数,因此他们使用了默认值。从这个意义上说, b 和 c 是可选的,因为如果你没有明确地给它们,函数不会失败。
* args和** kwargs之间的区别在于这样的函数:
def function(*args)
for argument in args:
print argument
可以像这样调用:
function(1,2,3,4,5,6,7,8)
并且所有这些参数都将存储在名为 args 的元组中。请记住,变量名称args可以替换为任何变量名称,所需的部分是星号。
然而,
def function(**args):
keys = args.keys()
for key in keys:
if(key == 'somethingelse'):
print args[key]
希望像这样调用:
function(key1=1,key2=2,key3=3,somethingelse=4,doesnt=5,matter=6)
并且所有这些参数都将存储在名为 args 的字典中。请记住,变量名称args可以替换为任何变量名称,所需的部分是双星号。
通过这种方式,您需要以某种方式获取密钥:
keys = args.keys()
答案 1 :(得分:0)
有关详细信息,请参阅教程:
https://docs.python.org/2/tutorial/controlflow.html#more-on-defining-functions