当你在Python中看到一个列表前面加了星号(*),这其实是一个非常酷的特性,叫做 unpacking。这个技巧不仅可以让你的代码更加简洁,还能提高可读性。让我们一起来看看它是如何工作的,以及你可以如何在你的代码中使用它。
什么是 Unpacking?
简单来说,unpacking 允许你把一个可迭代对象(比如列表或者元组)中的元素“解包”出来,并且直接传给函数作为参数,或者在赋值操作中使用。这就是为什么你会看到有些列表前面会加一个星号。
使用场景
函数参数
假设你有一个函数和一个列表:
def greet(first_name, last_name):
print(f"Hello, {first_name} {last_name}!")
和一个包含两个元素的列表:
name = ["John", "Doe"]
你可以通过在列表前加星号来直接传递列表的内容作为参数:
greet(*name)
这样,first_name
会被赋值为"John"
,last_name
会被赋值为"Doe"
。
合并列表
当你想要合并两个或更多的列表时,也可以使用星号:
list_one = [1, 2, 3]
list_two = [4, 5, 6]
merged_list = [*list_one, *list_two]
print(merged_list)
输出将会是:
[1, 2, 3, 4, 5, 6]
解包字典
虽然我们主要讨论的是列表,但是值得一提的是,你也可以使用两个星号(**)来解包字典:
info = {"name": "John", "age": 30}
print("Hello, I am {name} and I am {age} years old.".format(**info))
注意事项
- 记得列表或元组的长度要和函数参数的数量匹配,否则你会得到一个
TypeError
。 - 解包操作不仅仅限于列表,任何可迭代对象都可以使用这个技巧。
使用星号解包特性可以让你的代码更加清晰、简洁,特别是在处理列表和函数参数时。希望这对你有帮助。