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

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

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

def func(*args):print(args)

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

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

def func2(**kargs):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。

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

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

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

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

def func(**kwargw):print(kwargw)func(a=5)
----------------------------------------------------------
{'a': 5}

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

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

五、 * args和 * * kwargs合用

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

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

python可变长参数相关推荐

  1. python可变长参数(非关键字及关键字参数)

    可变长参数存在的意义是:每次调用一个函数处理不同量的参数输入.即,参数在调用之前输入的参数数量是未知的,或者多次调用该函数,每次的参数输入的量是不一致的: 可变长参数分为非关键字和关键字类型,分别对应 ...

  2. Python中函数的参数传递与可变长参数

    1.Python中也有像C++一样的默认缺省函数 1 def foo(text,num=0): 2 print text,num 3 4 foo("asd") #asd 0 5 f ...

  3. python函数中可变参数的传递方式是_Python中函数的参数传递与可变长参数

    1.Python中也有像C++一样的默认缺省函数 1 def foo(text,num=0):2 printtext,num3 4 foo("asd") #asd 0 5 foo( ...

  4. python的可变长参数

    测试了下python的可变长参数. 注意如下: 1. *对应的是元组,**对应的是dict. 所以,在设定参数的时候,可以不用*args1和**args2,而是使用args1, args2来接收.这样 ...

  5. python教程:可变长参数(*args、**kwargs)、返回值(return)

    一.可变长参数 1.默认参数: 代码如下: def information_register(name, age, country, sex):print("---注册信息---" ...

  6. python基础——可变长参数

    可变长参数 在很多情况下,我们对函数计算的逻辑需求是可以同时处理不定长的多个对象,例如:想定义一个可以计算任意长度的对象相加,则需要使用可变长参数.python中使用一个星号标注可变长参数,此时,传入 ...

  7. PYTHON 笔记:函数的参数(关键字参数,默认参数,可变长参数,可变长的关键字参数)

    一般的函数参数是位置参数,位置不对会出问题 1.关键字参数 使用参数名提供的参数就是关键字参数,有了关键字参数,顺序就不会有影响. >>>def printGrade(name,ID ...

  8. [转载] 【python】Python中*args和**kwargs的区别(在Python中如何使用可变长参数列表)

    参考链接: Python中的*args 和 **kwargs 博客已经搬家到"捕获完成": https://www.v2python.com 或者可以叫做,在Python中如何使用 ...

  9. python中可选参数和可变参数_Python函数中的可变长参数详解

    一.Python函数中的参数 1.使用python的函数时,有参数类别,比如位置参数.关键字参数.可变长参数 2.位置参数.关键字参数很好理解,关键是可变长参数经常能见到,但是一直没有搞懂是什么意思 ...

最新文章

  1. SpringBoot (三) :SpringBoot使用Freemarker模板引擎渲染web视图
  2. SQL on and 和 on where 的区别
  3. 类重复引用_JVM类加载从JDK来看
  4. 现在开始做一些什么事情可以在五年以后大为收益? Answer by FindProz.com Co-founder
  5. 学计算机毁一生,大学中4大“天坑”级别的专业,学了毁一生,家里没钱不要学...
  6. 处女篇:ObjectDataSource+CodeSmith实现基础增删改查功能
  7. 【黑客免杀攻防】读书笔记15 - 源码免杀、C++壳的编写
  8. matlab中低通滤波器的用法,matlab中低通滤波器
  9. logisim基础(非常基础)----寄存器元件的使用
  10. CentOS或Linux中,查看Tomcat版本的三种方式
  11. node.js 快速入门
  12. Vue之跨域调用网易云音乐API及QQ音乐API
  13. 使用线程模拟解决银行排队叫号问题
  14. android 微信浮窗实现_Android 悬浮窗功能的实现
  15. 淘客订单检测接口--检测淘宝订单是否是淘客订单的接口
  16. 小米系列手机 开发者版本 之 USB安装出现当前设备已被临时限制
  17. 《设计模式之禅》前言
  18. 数独小项目开篇:DFS解决数独难题
  19. 保温夹层滤芯式过滤器
  20. 穿透还原卡或还原软件

热门文章

  1. macOS终端(Terminal)历史命令查询
  2. java main getopt_getopt()用法详解
  3. 2023年软件行业展望
  4. GDB调试库lib文件/dir命令使用
  5. oob(out-of-bag)和关于bagging的更多讨论
  6. 公司很小的时候,怎么判断未来老板是否能做大做强?
  7. Netty 框架文档
  8. 华为模拟器eNSP使用SSH远程管理防火墙实验
  9. Android高手过招FAQ
  10. 国学观浮世:读新国学,自得其乐。