zoukankan      html  css  js  c++  java
  • python之*的魔性用法

    1. *在函数中的作用

    聚合

    在函数定义时聚合

    def eat(args):
        print('我请你吃:',args) 
    eat('蒸羊羔儿')
    
    # 输出结果
    # 我请你吃: 蒸羊羔儿
    

    打散

    在函数执行时打散

    *arg打散的是 str tuple list

    'alex' [1, 2, 3, 4] ('武sir', '太白', '女神',) 由这种打散变成('a', 'l', 'e', 'x', 1, 2, 3, 4, '武sir', '太白', '女神')

    **wkargs打散的是 dict 两个字典变一个

    func(中的两个表示只能打散字典,且打散后的只能传给kwargs)

    用法:

    dic1 = {'name':'太白','sex':'男'}
    dic2 = {'age': 73,'hobby': '吹'}
    l1 = [1,2,3]
    def func(**kwargs):
        print(args)
        print(kwargs)
    func(**dic1,**dic2)
    

    打散目的

    如果是传给*args就是将多个列表,或者字符,或者元组聚合成一个大的元组

    如果打散后的是传给**kwargs就是将多个字典聚合一个大字典

    s1 = 'alex'
    l1 = [1, 2, 3, 4]
    tu1 = ('武sir', '太白', '女神',)
    
    def func(*args):
        print(args)
    func(*s1,*l1,*tu1)
    
    # 输出结果
     ('a', 'l', 'e', 'x', 1, 2, 3, 4, '武sir', '太白', '女神')
    
    # 对比:
    以前是:'alex',[1, 2, 3, 4],('武sir', '太白', '女神',)
    打散后是: ('a', 'l', 'e', 'x', 1, 2, 3, 4, '武sir', '太白', '女神')
    

    练习题

    l1 = [1, 2, 3]
    l2 = ['太白', 'wusir', '景女神']
    def func(*args,**kwargs):
        print(args)
        print(kwargs)
    # func(l1,l2)
    # func(*l1,*l2)  # 当函数的执行时:*iterable 代表打散。
    func(*[1, 2, 3],*(11,22),*'fdsakl')
    
    dic2 = {'age': 73,'hobby': '吹'}
    l1 = [1,2,3]
    def func(*args,**kwargs):
        print(args)
        print(kwargs)
    func(*l1,**dic2)
    

    在函数以外还可以这样打散

    分别赋值
    a,b = (1,2)
    print(a, b) 
    # 输出结果
    1 2
    
    a,*b = (1, 2, 3, 4,)
    print(a, b) 
    # 输出结果
    1 [2, 3, 4]
    
    *rest,a,b = range(5)
    print(rest, a, b) 
    # 输出结果 
    [0, 1, 2] 3 4
    
    print([1, 2, *[3, 4, 5]]) 
    # 输出结果
    [1, 2, 3, 4, 5]
    

    一句话总结

    *arg打散的是 str tuple list

    'alex' [1, 2, 3, 4] ('武sir', '太白', '女神',) 由这种打散变成('a', 'l', 'e', 'x', 1, 2, 3, 4, '武sir', '太白', '女神')

    **wkargs打散的是 dict 两个字典变一个

    用法

    dic2 = {'age': 73,'hobby': '吹'}
    l1 = [1,2,3]
    def func(*args,**kwargs):
        print(args)
        print(kwargs)
    func(*l1,**dic2)
    
  • 相关阅读:
    python 基础笔记十
    python 基础笔记十一
    python 基础笔记九-集合
    python 基础笔记八-time模块
    python 基础笔记七-OS模块
    python 基础笔记六-函数
    Python 基础笔记四
    4-5 元祖
    4-4 修改文件
    4-3 高效读取文件 --待完成
  • 原文地址:https://www.cnblogs.com/zanao/p/11048057.html
Copyright © 2011-2022 走看看