资讯专栏INFORMATION COLUMN

Python 的 Keyword-Only Arguments (强制关键字参数)

沈建明 / 3075人阅读

摘要:另外还需要注意与列表参数进行区分,列表参数的号是紧跟参数的,而非独占一个位置且列表参数可以传零至多个值但强制性关键字参数在传值时不可以缺省除非其有默认值,且必须使用关键字赋值参考

直接看一个正常的函数及其调用:

def dog(name, host, age):
    print(name, host, age)

dog("dobi", "xuzhoufeng", 2)
#dobi xuzhoufeng 2

上例中,函数有三个位置参数,我们在调用中在相应位置传递对应值即可,而 keyword-only arguments 其形式是这样子的:

def dog(name, host, *, age):
    print(name, host, age)

参数中有一个 “*” 号,在该符号之后的所有参数(可一至多个)均被称为强制关键字参数,如果按照位置参数的方式对这些参数传值:

dog("dobi", "xuzhoufeng", 2)
#TypeError: dog() takes 2 positional arguments but 3 were given

就会出现 TypeError,正确的传值形式为:

dog("dobi", "xuzhoufeng", age = 2)
#dobi xuzhoufeng 2

也即这里的age 必须使用关键字参数的形式进行传值。

另外 keyword-only arguments 还需要注意与列表参数进行区分,列表参数的 "*" 号是紧跟参数的,而非独占一个位置,且列表参数可以传零至多个值:

def dog(name, host, *age):
    print(name, host, age)

dog("dobi", "xuzhoufeng")
#dobi xuzhoufeng

但强制性关键字参数在传值时不可以缺省(除非其有默认值),且必须使用关键字赋值:

dog("dobi", "xuzhoufeng")
#TypeError: dog() missing 1 required keyword-only argument: "age"

def dog(name, host, *, age = 2):
    print(name, host, age)

dog("dobi", "xizhoufeng")
#dobi xuzhoufeng

参考:

PEP 3102

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37977.html

相关文章

  • Python 自定义函数特殊属性(收藏专用)

    Python 中通过函数定义所创建的用户自定义函数对象均具有一些特殊属性,需要注意的是这里介绍的是自定义函数(function类型)的特殊属性,而非方法(method 类型)的特殊属性,函数和方法的特熟属性以及默认的返回值可能不尽相同。 对于大多数特殊属性,可以通过下面这个例子示范一下: class Test(): def func(self, v = dog): 这里演...

    zhou_you 评论0 收藏0
  • Python - 函数参数

    摘要:调用函数时,必须传入且传入的两个值按照位置顺序依次赋给参数和,若缺省,则会报错。例如二默认参数在函数定义中,为参数预先定义默认值。执行相当于调用如果要求的四次方,则需要执行设置默认参数的好处默认参数可以简化函数的调用,降低调用函数的难度。 题外话:因为时间关系,没能保持一定的更新频率。但还是会一直坚持的~ 之前介绍了Python函数的定义,今天分享一下Python函数的参数吧!内容会...

    APICloud 评论0 收藏0
  • Python标准库---4、内置函数(L-M-N-O)

    摘要:上一篇文章标准库内置函数下一篇文章标准库内置函数内置函数返回对象的长度元素个数。对表示单个字符的字符串,返回代表它码点的整数。上一篇文章标准库内置函数下一篇文章标准库内置函数 上一篇文章:Python标准库---3、内置函数(G-H-I-J-K)下一篇文章:Python标准库---5、内置函数(P-K-R) 内置函数: showImg(https://segmentfault.com...

    MartinHan 评论0 收藏0
  • Python 面向对象编程OOP (四) 写类神器:attrs

    摘要:它的目标就是在不减慢你编程速度的前提下,帮助你来编写简洁而又正确的代码。对于这种情况,我们就需要有条件来控制某些属性不能为非法值。所以,一定要在里面某个错误。 使用attrs解放双手 大家好,这一期我想和大家分享一个OOP编程的高效神器:attrs库 首先我们来介绍下 attrs 这个库,其官方的介绍如下: attrs 是这样的一个 Python 工具包,它能将你从繁综复杂的实现上解脱...

    netmou 评论0 收藏0
  • Python基础——数据类型

    摘要:本文讲解常用种数据类型通过剖析源码弄清楚每一种数据类型所有的内置函数,理解每一个函数的参数返回值使用场景是什么。 本文讲解Python常用7种数据类型:int, float, str, list, set, dict. 通过剖析源码弄清楚每一种数据类型所有的内置函数,理解每一个函数的参数、返回值、使用场景是什么。 一、整型 int Python3.6源码解析 class int(obj...

    ymyang 评论0 收藏0

发表评论

0条评论

沈建明

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<