• Python进阶系列 - 18讲 伟大的*号


    星号 (*) 可用于 Python 中的不同情况:

    • 乘法和幂运算
    • 创建具有重复元素的列表、元组或字符串
    • *args**kwargs 和关键字参数
    • 为函数参数解包列表/元组/字典
    • 拆包容器
    • 将容器合并到列表/合并字典

    乘法和幂运算

    代码:

    print(7 * 5)
    print(2**4)
    
    • 1
    • 2

    结果:

    35
    16
    
    • 1
    • 2

    创建具有重复元素的列表、元组或字符串

    代码:

    # 列表
    zeros = [0] * 10
    onetwos = [1, 2] * 5
    print(zeros)
    print(onetwos)
    # 元组
    zeros = (0,) * 10
    onetwos = (1, 2) * 5
    print(zeros)
    print(onetwos)
    # 字符串
    A_string = "A" * 10
    AB_string = "AB" * 5
    print(A_string)
    print(AB_string)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    结果:

    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [1, 2, 1, 2, 1, 2, 1, 2, 1, 2]
    (0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
    (1, 2, 1, 2, 1, 2, 1, 2, 1, 2)
    AAAAAAAAAA
    ABABABABAB
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    *args , **kwargs 和关键字参数

    • *args 用于可变长度参数
    • **kwargs 用于可变长度的关键字参数
    • 使用 * 后跟更多函数参数来强制仅使用关键字参数

    代码:

    #可变参数
    def my_function(*args, **kwargs):
        for arg in args:
            print(arg)
        for key in kwargs:
            print(key, kwargs[key])
    my_function("Hey", 3, [0, 1, 2], name="Alex", age=8)
    
    #强制关键词参数
    def my_function2(name, *, age):
        print(name)
        print(age)
    my_function2("Michael", age=5)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    结果:

    Hey
    3
    [0, 1, 2]
    name Alex
    age 8
    Michael
    5
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    参数解包

    • 如果长度与参数匹配,则列表/元组/集合/字符串可以使用一个 * 解压缩为函数参数。
    • 如果长度和键与参数匹配,字典可以用两个 ** 解包。

    代码:

    def foo(a, b, c):
        print(a, b, c)
    my_list = [1, 2, 3]
    foo(*my_list) # *list传参
    my_string = "ABC"
    foo(*my_string)
    my_dict = {'a': 4, 'b': 5, 'c': 6}
    foo(**my_dict) # **dict传参
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    结果:

    1 2 3
    A B C
    4 5 6
    
    • 1
    • 2
    • 3

    拆分容器

    将列表、元组或集合的元素解包为单个和多个剩余元素。

    代码:

    numbers = (1, 2, 3, 4, 5, 6, 7, 8)
    print("*在开始:")
    *beginning, last = numbers
    print(beginning, last)
    print("*在末尾:")
    first, *end = numbers
    print(first, end)
    print("*在中间位置:")
    first, *middle, last = numbers
    print(first, middle, last)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    结果:

    *在开始:
    [1, 2, 3, 4, 5, 6, 7] 8
    *在末尾:
    1 [2, 3, 4, 5, 6, 7, 8]
    *在中间位置:
    1 [2, 3, 4, 5, 6, 7] 8
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    将迭代元素合并到列表/字典

    代码:

    # 合并列表
    my_tuple = (1, 2, 3)
    my_set = {4, 5, 6}
    my_list = [*my_tuple, *my_set]
    print(my_list)
    # 合并字典
    dict_a = {"one": 1, "two": 2}
    dict_b = {"three": 3, "four": 4}
    dict_c = {**dict_a, **dict_b}
    print(dict_c)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    结果:

    [1, 2, 3, 4, 5, 6]
    {'one': 1, 'two': 2, 'three': 3, 'four': 4}
    
    • 1
    • 2
  • 相关阅读:
    基于Springboot的漫画网站springboot022
    Thread 类的基本用法——一网打尽
    15.模型评估和选择问题
    MeterSphere | 前端入参加密
    中关村科幻产业创新中心 “科技赋能文化旅游,洞见哈萨克斯坦”数字旅游展盛大开幕
    沉睡者 - 怎么样可以在网络上挣钱,告诉你网上挣钱的5种方法!
    关路灯(区间dp)
    PostgreSQL之IOException
    进程(fork()详解)
    Apple Watch无法开机怎么办?苹果手表不能开机解决方法!
  • 原文地址:https://blog.csdn.net/pythontip/article/details/126911588