📅  最后修改于: 2023-12-03 15:19:34.111000             🧑  作者: Mango
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_list
和my_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中的星号在参数解包、可变参数、扩展列表和实现占位符等场景中都有广泛应用。掌握这些用法,能够帮助程序员更简洁、高效地编写代码。