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