📜  python星号作为生成器 - Python(1)

📅  最后修改于: 2023-12-03 15:19:34.111000             🧑  作者: Mango

Python星号作为生成器

Python中的星号*可以用作生成器,在许多场合下都非常有用。本文将详细介绍Python星号的功能和用法。

参数解包

经常会遇到需要将列表或元组中的元素传递给函数,但是函数所需参数的数量和列表或元组中的元素数量不相等的情况。这时就可以使用星号解包操作符。

解包元组
def my_func(a, b, c):
    print(a, b, c)

my_tuple = ('hello', 'world', '!')
my_func(*my_tuple)  # 等同于 my_func('hello', 'world', '!')

解包元组my_tuple,将元素传递给函数my_func

解包列表
def my_func(a, b, c):
    print(a, b, c)

my_list = ['hello', 'world', '!']
my_func(*my_list)  # 等同于 my_func('hello', 'world', '!')

与解包元组相似,解包列表后也可以将元素传递给函数。

解包字典
def my_func(a, b, c):
    print(a, b, c)

my_dict = {'a': 'hello', 'b': 'world', 'c': '!'}
my_func(**my_dict)  # 等同于 my_func(a='hello', b='world', c='!')

使用两个星号**可以将字典的键值对解包为参数传递给函数。

可变参数

使用星号作为参数定义可以将参数数量变为可变的,即在调用函数时可以传递任意数量的参数。

可变参数列表
def my_func(*args):
    for arg in args:
        print(arg)

my_func('hello', 'world', '!')  # 输出 hello, world, !

在参数定义中使用星号来定义可变参数列表args,然后在函数中使用for循环遍历这个列表。

可变参数字典
def my_func(**kwargs):
    for key, value in kwargs.items():
        print(key, value)

my_func(a='hello', b='world', c='!')  # 输出 a hello, b world, c !

同样地,在参数定义中使用两个星号**来定义可变参数字典kwargs,然后在函数中遍历字典中的键值对。

扩展列表

使用星号可以将两个列表合并为一个。

my_list = [1, 2, 3]
my_list2 = [4, 5, 6]
new_list = [*my_list, *my_list2]
print(new_list)  # 输出 [1, 2, 3, 4, 5, 6]

将列表my_listmy_list2解包并扩展为一个新列表new_list

实现占位符

使用星号来实现占位符,简化代码。

my_list = ['hello', 'world', '!']
first, *middle, last = my_list
print(first, last)  # 输出 hello !
print(middle)  # 输出 ['world']

将列表my_list中的第一个元素赋给变量first,最后一个元素赋给变量last,并使用星号来占位并赋给变量middle

总结,Python中的星号在参数解包、可变参数、扩展列表和实现占位符等场景中都有广泛应用。掌握这些用法,能够帮助程序员更简洁、高效地编写代码。