一、基础算术运算
1.* 乘法运算符
print(3 * 4) # 12(数字乘法)
print("a" * 3) # "aaa"(字符串重复)
print([1,2] * 2) # [1,2,1,2](列表重复)
2.** 幂运算符
print(2 ** 3) # 8(2的3次方)
二、函数参数中的使用
(1) 定义函数时:收集参数
*args:收集任意数量的位置参数 → 元组
例1:
def func(a, *args):
print(a) # 1
print(args) # (2, 3) 元组
func(1, 2, 3)
例2:
def func(*args):
for arg in args:
print(arg)
func(1, 2, 3, "hello")
**kwargs:收集任意数量的关键字参数 → 字典
例1:
def func(a, **kwargs):
print(a) # 1
print(kwargs) # {'b': 2, 'c': 3}
func(1, b=2, c=3)
例2:
def func(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
func(name="Alice", age=25, city="New York")
(2) 调用函数时:解包参数
在 Python 调用函数时,解包参数是一种非常方便的功能,它允许你将一个可迭代对象(如列表、元组等)或字典中的元素解包为函数的参数。
*iterable:解包可迭代对象为位置参数
def func(a, b, c):
print(a + b + c)
nums = [1, 2, 3]
func(*nums) # 等价于 func(1, 2, 3) → 输出 6
**dict:解包字典为关键字参数
def func(a, b, c):
print(a * b * c)
params = {'a': 2, 'b': 3, 'c': 4}
func(**params) # 等价于 func(a=2, b=3, c=4) → 输出 24
三、解包操作(赋值与迭代)
1.序列解包
a, *b, c = [1, 2, 3, 4]
print(a) # 1
print(b) # [2, 3](列表)
print(c) # 4
2.迭代中解包
points = [(1, 2), (3, 4)]
for x, y in points: # 常规解包
print(x, y)
for first, *rest in [(1, 2, 3), (4, 5)]:
print(first, rest) # 1 [2, 3] → 4 [5]
四、字典合并(Python 3.5+)
使用 ** 合并字典:
dict1 = {'a': 1}
dict2 = {'b': 2}
merged = {**dict1, **dict2, 'c': 3}
print(merged) # {'a': 1, 'b': 2, 'c': 3}
五、强制关键字参数(Python 3+)
在函数定义中,* 之后的参数必须用关键字传递:
def func(a, *, b, c):
print(a, b, c)
func(1, b=2, c=3) # 正确
func(1, 2, 3) # 报错:b和c缺少关键字
六、特殊用法示例
1.同时使用 *args 和 **kwargs
def wrapper(*args, **kwargs):
print("位置参数:", args)
print("关键字参数:", kwargs)
wrapper(1, 'a', x=10, y=20)
# 输出:位置参数: (1, 'a') 关键字参数: {'x':10, 'y':20}
2.多层解包
data = [*range(3), *"AB"]
print(data) # [0, 1, 2, 'A', 'B']

被折叠的 条评论
为什么被折叠?



