用实例说明python的*args和**kwargs用法

时间:2021-05-04 08:25:55 

先来看一个例子:


>>> def foo(*args, **kwargs):
    print 'args =', args
    print 'kwargs = ', kwargs
    print '-----------------------'

   
>>> if __name__ == '__main__':
    foo(1, 2, 3, 4)
    foo(a=1, b=2, c=3)
    foo(1,2,3,4, a=1, b=2, c=3)
    foo('a', 1, None, a=1, b='2', c=3)

其输出结果如下:


args = (1, 2, 3, 4)
kwargs =  {}
-----------------------
args = ()
kwargs =  {'a': 1, 'c': 3, 'b': 2}
-----------------------
args = (1, 2, 3, 4)
kwargs =  {'a': 1, 'c': 3, 'b': 2}
-----------------------
args = ('a', 1, None)
kwargs =  {'a': 1, 'c': 3, 'b': '2'}
-----------------------


从以上例子可以看出,这两个是python中的可变参数。*args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个 dict。并且同时使用*args和**kwargs时,*args参数列必须要在**kwargs前,像foo(a=1, b='2', c=3, a', 1, None, )这样调用的话,会提示语法错误“SyntaxError: non-keyword arg after keyword arg”。如同所示:

标签:python
0
投稿

猜你喜欢

  • Python在线和离线安装第三方库的方法

    2023-08-24 19:37:11
  • PyTorch梯度下降反向传播

    2021-05-15 17:06:14
  • JS实现简单的二元方程计算器功能示例

    2024-05-02 17:39:30
  • vue3中cookie的详细使用过程

    2024-04-30 08:45:05
  • Go语言eclipse环境搭建图文教程

    2024-05-09 09:47:36
  • Python调用腾讯云短信服务发送手机短信

    2021-10-07 16:55:38
  • python写入已存在的excel数据实例

    2021-05-17 15:08:17
  • 简单有效上手Python3异步asyncio问题

    2022-01-14 02:28:34
  • Go语言的type func()用法详解

    2024-02-21 12:50:51
  • python抓取并保存html页面时乱码问题的解决方法

    2022-06-06 21:41:40
  • SQL Server数据库于应用程序的关系

    2010-07-26 14:21:00
  • Go gRPC服务客户端流式RPC教程

    2023-07-16 06:08:55
  • MySQL慢SQL语句常见诱因以及解决方法

    2024-01-18 12:36:25
  • PHP将amr音频文件转换为mp3格式的操作细节

    2023-06-15 22:20:35
  • Python yield的使用详解

    2021-07-17 22:23:29
  • bootstrapValidator表单验证插件学习

    2024-04-10 13:53:34
  • python 动态导入模块实现模块热更新的方法

    2022-07-06 17:37:56
  • python-docx修改已存在的Word文档的表格的字体格式方法

    2021-07-20 05:03:07
  • python和shell获取文本内容的方法

    2023-06-20 05:42:35
  • SQL Server Agent 服务启动后又停止问题

    2024-01-25 21:56:49
  • asp之家 网络编程 m.aspxhome.com