python可变长参数

举报
风吹稻花香 发表于 2022/04/10 22:22:10 2022/04/10
【摘要】 编程函数时, 偶尔会遇到参数数量不确定的时候, 这时候就要使用可变参数. 在python中, 提供了两种可变参数: 在形参名前加一个*, 表示接受任意多的参数 def func(*args):    print(args)     func()   &...


编程函数时, 偶尔会遇到参数数量不确定的时候, 这时候就要使用可变参数.

在python中, 提供了两种可变参数:

在形参名前加一个*, 表示接受任意多的参数


  
  1. def func(*args):
  2.     print(args)
  3.     


func()                # ()
func(1)                # (1,)
func(1, 2)            # (1, 2)

在形参名前加两个**, 表示接受任意的关键参数


  
  1. def func2(**kargs):
  2.     print(kargs)


    
func2()                # {}
func2(x=1)            # {'x': 1}
func2(x=1, y=2)        # {'x': 1, 'y': 2}

上面两种方法在python2, python3中使用都一样, 但在python3中提供了一种机制, 使可变参数的使用更加方便, 那就是通过*来拆包

print((1, 2, 3))            # (1, 2, 3)
print(*(1, 2, 3))            # 1 2 3
print({'x': 1, 'y': 2})        # {'x': 1, 'y': 2}
print(*{'x': 1, 'y': 2})    # x y


原文链接:https://blog.csdn.net/hq_cjj/article/details/88089159

一、可变长形参之*
形参中的会将溢出的位置实参全部接收,然后存储元组的形式,然后把元组赋值给后的参数。需要注意的是:*后的参数名约定俗成为args


  
  1. def num (x,y,*args):
  2. print(args)
  3. return 1
  4. num(1,2,3,4,5)
  5. ----------------------------------------------------------
  6. (3, 4, 5) *args就为(3,4,5),1,2分别传给了x,y

二、可变长实参之*
实参中的*,会将后参数的值循环取出,打散成位置实参。以后但凡碰到实参中带*的,它就是位置实参,应该马上打散成位置实参去看。


  
  1. '''
  2. 遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
  3. 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
  4. '''
  5. def func(x, y, z, *args):
  6. print(x, y, z, args)
  7. func(1, *(1, 2), 3, 4)
  8. ----------------------------------------------------------
  9. 1 1 2 (3, 4)

三、可变长形参之**
形参中的 * * 会将溢出的关键字实参全部接收,然后存储字典的形式,然后把字典赋值给* *后的参数。需要注意的是: **后的参数名约定俗成为kwargs。


  
  1. def func(**kwargw):
  2. print(kwargw)
  3. func(a=5)
  4. ----------------------------------------------------------
  5. {'a': 5}

四、可变长实参之**
实参中的*  会将 后参数的值循环取出,打散成关键字实参。以后但凡碰到实参中带 *的,它就是关键字实参,应该马上打散成关键字实参去看


  
  1. '''
  2. 遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
  3. 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
  4. '''
  5. def num (x,y,**kwargs):
  6. print(kwargs)
  7. return 1
  8. num(1,2,j=3,n =4,q =5)
  9. ------------------------------------------------------------
  10. (3, 4, 5)
  11. {'j': 3, 'n': 4, 'q': 5}

五、 * args和 * * kwargs合用


  
  1. def num (x,y,f = 0,*args,**kwargs):
  2. print(f)
  3. print(args)
  4. print(kwargs)
  5. return 1
  6. num(1,2,6,7,8,j=3,n =4,q =5)
  7. ------------------------------------------------------------
  8. (7, 8)
  9. {'j': 3, 'n': 4, 'q': 5}

python可变长参数_cjj_2811651110的博客-CSDN博客

文章来源: blog.csdn.net,作者:AI视觉网奇,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jacke121/article/details/124083898

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。