[python]函数默认参数顺序问题

您所在的位置:网站首页 python调用方法传参 [python]函数默认参数顺序问题

[python]函数默认参数顺序问题

2024-07-12 20:14| 来源: 网络整理| 查看: 265

1、python2、python3 三者顺序是:位置参数、默认参数、*args   def foo(x,y=1,*args): pass foo (1,2,3,4,5) // 其中的x为1,y=1的值被2替换,3,4,5都给args,即args=(3,4,5) 2、python3 三者顺序是:位置参数、*args、默认参数 def foo(x,*args,y=1): pass foo (1,2,3,4,5) // 其中的x为1,2,3,4,5都给args,即args=(2,3,4,5),y始终为1 3、python2、python3  **kwargs与位置参数、*args、默认参数混用

**kwargs:可变字典长度(表示的就是形参中按照关键字传值把多余的传值以字典的方式呈现)

位置参数、*args、**kwargs三者的顺序必须是位置参数、*args、**kwargs

def foo(x,*args,**kwargs): pass foo (1,2,3,4,y=5,a=6,b=7) // 其中的x为1,2,3,4都给args,即args=(2,3,4),y=5,a=6,b=7以字典形式传给kwargs,即kwargs={'y':5,'a':6,'b':7}

 

python2参数顺序:必选参数、默认参数、可变参数,关键字参数。

python2中,默认参数必须在可变参数之前

 

Python3参数顺序:必选参数,默认参数,*args,**kwargs

python3中,*args也可以在默认参数前,谁在前谁优先拿到值

 

python2和python3相同的是:

1、必选参数必选在默认参数之前

2、关键字参数在最后

 

参考:

牛客网问题评论:https://www.nowcoder.com/questionTerminal/d899caec3dc54e60a9a238546e5b363a?toCommentId=2993542



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3