• Python中*和**的使用


    Python中***是两个非常有趣的操作符,*对应列表或元祖,**则对应字典,主要有以两类功能。

    1. 在函数参数或赋值中接受不确定数量的位置参数和关键字参数。

    位置参数指按顺序传入的参数,如add(1,2,3), 关键字参数指以键值对传入的参数如add(a=1,b=2,c=3)

    def  func(*args, **kwargs):
        print("args接收所有位置参数并得到一个元祖变量", type(args), args)
        print("kwargs接收所有的关键字参数并得到一个字典", type(kwargs), kwargs)
    
    func(1, 2, 3, a=4, b=5, c=6)
    

    在函数中使用*args和**kwargs可以使得函数可以接受任意数量的位置参数和关键词参数。

    1. 在变量赋值中*同样可用于保留或抛弃任意数量的参数,示例如下
    a, *_, c = [1,2, 3,4,5,6]
    print(a, c)
    print(_, type(_))
    

    _也算一个变量,一般我不需要使用的变量可用_表示,*_则可以接收第一个和最后一个之外的任意多个变量,结果是个元祖。
    3. 列表元祖和字典拆包
    如果我们定义l = [1,2,3]那么l1个列表变量,如果我们需要里面的3个值1,2,3,就可以使用*l将其拆开。

    • l: 1个变量, 列表变量
    • *l:3个值
      如我们有个函数如下:
    def add(a,b,c):
          print(a+b+c)
    

    怎么样能把l中的3个数据不通过索引直接传入函数呢?就可以想下面一样解包直接传入

    l = [1,2,3]
    def add(a,b,c):
          print(a+b+c)
    
    add(*l)  # *l 就相当于add(1,2,3)
    

    字典的拆包使用**,即把一个字典变量拆成多个键值对,示例如下。

    data = {"a": 1, "b": 2, "c": 3}
    def add(a,b,c):
          print(a+b+c)
    
    add(**data)  # 相当于add(a=1,b=2,c=3)
    
  • 相关阅读:
    nginx default setting
    ubuntu dotnet core run 十月第一弹
    vwmare 十月第 1 弹
    学习 lind 语 里的一些组件使用。
    学习  解决用户验证、单点登录、api访问控制的开源框架 的 十月 第一弹:
    学习 lind api 十月 第5弹
    Data for the People: How to Make Our Post-Privacy Economy Work for You
    iframe高度的自适应
    dtree在ie6下点击页面报错
    前台页面分页对总页数的判断
  • 原文地址:https://www.cnblogs.com/superhin/p/13837849.html
Copyright © 2020-2023  润新知