栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

带* args和** kwargs的默认参数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

带* args和** kwargs的默认参数

只需将默认参数放在

*args

def foo(a, b=3, *args, **kwargs):

现在,

b
如果将其作为关键字参数或第二个位置参数传递,则将进行显式设置。

例子:

foo(x) # a=x, b=3, args=(), kwargs={}foo(x, y) # a=x, b=y, args=(), kwargs={}foo(x, b=y) # a=x, b=y, args=(), kwargs={}foo(x, y, z, k) # a=x, b=y, args=(z, k), kwargs={}foo(x, c=y, d=k) # a=x, b=3, args=(), kwargs={'c': y, 'd': k}foo(x, c=y, b=z, d=k) # a=x, b=z, args=(), kwargs={'c': y, 'd': k}

请注意,尤其

foo(x, y, b=z)
不能使用,因为
b
在这种情况下是按位置分配的。


该代码也可以在Python 3中使用。在Python 3中将默认arg放在 后面

*args
,使其成为“仅关键字”参数, 只能
按名称指定,不能按位置指定。如果要在Python 2中使用仅关键字的参数,则可以使用@mgilson的解决方案。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/637736.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号