在Python中,星号(*
)是一个多用途运算符,具有多种使用场景。它在函数定义、解包操作、算术运算、模块导入等多个领域扮演重要角色。
1、算术运算符
单星号 *
:用于数值的乘法或幂运算中的相乘。
result = 2 * 3 # 输出6
双星号 **
:表示幂运算(指数):
result = 2 ** 3 # 输出8(2的三次方)
另外,比较特殊的,单 *
在左侧为字符串的情况下表示“复制”N次的意思,其实这就是乘法运算。
result = "A"*3 # 输出AAA(3个A)
2、函数参数
关于函数参数,可以先参考文章:https://liaoxuefeng.com/books/python/function/parameter/index.html
符号*函数参数这里有两个用处。
*args:
位置参数收集,允许函数接受任意数量的位置参数,并将其存储为一个元组。
def my_func(*args):
print(args)
my_func(1, 2, 3) # 输出:(1, 2, 3)
**kwargs
:关键字参数收集,允许函数接受任意数量的关键字参数(键值对),并存储为一个字典。
def my_func(**kwargs):
print(kwargs)
my_func(a=1, b=2) # 输出:{'a': 1, 'b': 2}
3、参数解包
解包操作允许将序列(如列表、元组、字典)展开为独立的参数。
函数调用中的解包
*
解包可迭代对象(如列表、元组)为位置参数:
def add(a, b):
return a + b
nums = [3, 5]
print(add(*nums)) # 输出8,等价于 add(3, 5)
**
解包字典为关键字参数:
config = {'width': 800, 'height': 600}
def configure(width, height):
return f"Width: {width}, Height: {height}"
print(configure(**config)) # 输出: "Width: 800, Height: 600"
序列解构
用 *
捕获剩余元素:
# 解构列表
a, *rest = [1, 2, 3, 4]
print(a) # 1
print(rest) # [2, 3, 4]
# 解构元组
first, *middle, last = (10, 20, 30, 40)
print(first) # 10
print(middle) # [20, 30]
print(last) # 40
4、模块导入
from module import *
导入模块中的所有公有符号(除以下划线开头的名称)。不建议在大型项目中使用,因为它可能污染命名空间。
from math import *
print(sqrt(16)) # 输出4.0
5、字典与集合的解包
合并字典
在Python3.5之后,可以使用如下方式合并字典
dict1 = {"a": 1, "b": 2}
dict2 = {"b": 3, "c": 4}
merged = {**dict1, **dict2} # 输出: {'a':1, 'b':3, 'c':4}
实际上是先解包,再合并。
Python3.9之后,可以使用|符号合并字典
merged = dict1 | dict2 # 等同于 {**dict1, **dict2}
合并集合或列表
用 *
展开可迭代对象:
# 合并列表
list1 = [1, 2]
list2 = [3, 4]
combined = [*list1, *list2] # 输出:[1, 2, 3, 4]
# 合并集合
set1 = {1, 2}
set2 = {3, 4}
combined_set = {*set1, *set2} # 输出:{1,2,3,4}
注意:本文归作者所有,未经作者允许,不得转载