python 命名关键字参数
对于关键字参数,函数的调用者可以传入任意不受限制的关键字参数。至于到底传入了哪些,就需要在函数内部通过kw检查。如果要限制关键字参数的名字,就可以用命名关键字参数,例如,仍以person()函数为例,只接收city和job作为关键字参数。这种方式定义的函数如下:
1#和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数。
2defperson(name,age,*,city,job):
3print(name,age,city,job)
4
5#调用方式如下:
6>>>person('Jack',24,city='Beijing',job='Engineer')
7Jack24BeijingEngineer
8
9#如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了:
10defperson(name,age,*args,city,job):
11print(name,age,args,city,job)
12
13#命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错:
14>>>person('Jack',24,'Beijing','Engineer')
15Traceback(mostrecentcalllast):
16File"",line1,in
17TypeError:person()takes2positionalargumentsbut4weregiven
18#上面的错误说的是:由于调用时缺少参数名city和job,Python解释器把这4个参数均视为位置参数,但person()函数仅接受2个位置参数。
19
20
21#命名关键字参数可以有缺省值,从而简化调用:
22defperson(name,age,*,city='Beijing',job):
23print(name,age,city,job)
24
25#由于命名关键字参数city具有默认值,调用时,可不传入city参数:
26>>>person('Jack',24,job='Engineer')
27Jack24BeijingEngineer
使用命名关键字参数时,要特别注意,如果没有可变参数,就必须加一个*作为特殊分隔符。如果缺少*,Python解释器将无法识别位置参数和命名关键字参数:
1
2
3defperson(name,age,city,job):
#缺少*,city和job被视为位置参数
pass
以上内容为大家介绍了python命名关键字参数,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。

猜你喜欢LIKE
相关推荐HOT
更多>>
python函数中使用for循环
python函数中使用for循环1、在for循环中使用函数需要更长的执行时间,因为每次迭代都会调用该函数。2、如果for循环是在函数内部实现的,那么该...详情>>
2023-11-14 13:53:34
python3.1版本的特性有哪些
python3.1中的特性有哪些1、千位数格式化,可以在使用字符串格式化函数时直接完成。在格式化大数时,通常是每三位数放置逗号,使数字更易读(例...详情>>
2023-11-14 13:18:27
python__new__()和__init__()有什么区别?
在python中,__new__()不是一定要有,只有继承自object的类才有,该方法可以return父类(通过super(当前类名,cls).__new__())出来的实例,或者直...详情>>
2023-11-14 12:38:55
pythonwheel是什么
python的第一个主流打包格式是.egg文件,现在大家庭中又有了一个叫做Wheel(*.whl)的新成员。wheel“被设计成包含PEP376兼容安装(一种非常接近于...详情>>
2023-11-14 11:30:39热门推荐
技术干货






