专栏首页Java进阶之路Python函数中的*、*args、**kwargs

Python函数中的*、*args、**kwargs

==用法1:不定长参数==

当函数需要的参数数量不确定的时候,可以使用args 和 kwargs , 所有的位置参数保存在args中,以元组的形式保存,调用时直接用args,不需要带 * 所有的关键参数保存在kwargs中,以字典的形式保存,调用时也直接使用kwargs

#demo1:
def func(*args, **kwargs):
    print(args)
    print(kwargs)

func("jack", 18, "male")
#output:
('jack', 18, 'male')
{}

调用时没有使用关键参数,所以kwargs字典里面是空

#demo2:
def func(*args, **kwargs):
    print(args)
    print(kwargs)

func(name="jack", age=18, sex="male")
#output:
('jack', 18)
{'sex': 'male'}

调同时使用位置参数和关键参数,关键参数要放在位置参数后,否则会报错

==注意:==
  • *args 和 **kwargs里面的参数名args、kwargs可以为任何变量名,约定俗成用args和kwargs

==用法2:* 和 *para 后的参数调用时必须是关键参数==

#demo1:
def func(x, *, y):
    print(x, y)

func(3, y=5)
func(x=3, y=5)
# func(x=3, 5)  报错
# func(3, 5)    报错
#output:
3 5
3 5
  • *之后的参数调用必须是关键参数, 之前的不限制,
  • 如果 * 放在参数列表的第一个,则后面的参数都必须用关键参数
#demo2:
def func(x, *para, y):
    print(x, para, y)

func(3, 4, y=5)
#output:
3 (4,) 5

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Nginx日志常用统计分析命令

    在nginx log中最后一个字段加入$request_time 列出传输时间超过 3 秒的页面,显示前20条

    神秘的寇先森
  • 数据可视化工具zeppelin安装与使用

    神秘的寇先森
  • Flink窗口触发器

    窗口的触发器定义了窗口是何时被触发并同时决定触发行为(对窗口进行清理或者计算)。触发器确定窗口(由窗口分配程序形成)何时准备由窗口函数处理。每个WindowAs...

    神秘的寇先森
  • 19-3-14Python中函数的进阶

    注意:参数arg、*args、**kwargs三个参数的位置必须是一定的。必须是(arg,*args,**kwargs)这个顺序,否则程序会报错。

    GhostCN_Z
  • 如何使用高大上的方法调参数

    本文主要介绍作者与 Elad Hazan, Adam Klivans 合作的最新论文: Hyperparameter Optimization: A Spec...

    AI研习社
  • 国内电子签名如火如荼,为何DocuSign 在美遇到IPO危机?

    T客汇官网:tikehui.com 撰文 | 杨丽 电子签名,就是通过密码技术对电子档案实施电子形式的签名,能帮助企业大大提升文档签名授权的效率,这项服务在企...

    人称T客
  • Go-函数

    小小咸鱼YwY
  • 从遍寻CEO无果到市值60亿美元,小议电签独角兽DocuSign

    人称T客
  • geopandas overlay 函数报错问题解决方案

    这篇文章依旧是基于上一篇文章(使用Python实现子区域数据分类统计)而写,此文章中介绍了使用 geopandas 的 overlay 函数对两个 GeoDat...

    魏守峰
  • Python初学者应该了解的星号(*)

    特别是星号(*),在Python中是一个用途广泛的操作符,而不仅仅用于两个数字相乘的运算之中。在本文中,我们将讨论星号的多种用途。

    老齐

扫码关注云+社区

领取腾讯云代金券