Background

Python学习:星号的作用

696
3 分钟阅读

算术运算

最基本的 * 作为乘法运算符就不必多说了

构造与结构

构造列表

构造列表时,在变量前面添加 * 相当于将元素从列表中“提取”出来,放入新的列表

lst = [1, 2, 3]
new_lst = [0, lst, 4, 5]
print("不使用*号,构造后的列表:{}".format(new_lst))
new_lst = [0, *lst, 4, 5]
print("使用*号,构造后的列表:{}".format(new_lst))
# 运行结果
# 不使用*号,构造后的列表:[0, [1, 2, 3], 4, 5]
# 使用*号,构造后的列表:[0, 1, 2, 3, 4, 5]

解构列表

将列表中的元素分配给几个变量,其中对带有 * 的变量赋值时,其将会接受所有多余的值作为一个新的列表

# 列表解构
first, *lst, last = new_lst
print("列表第一个元素:{}".format(first))
print("列表中间元素:{}".format(lst))
print("列表最后一个元素:{}".format(last))
# 运行结果
# 列表第一个元素:0
# 列表中间元素:[1, 2, 3, 4]
# 列表最后一个元素:5

字典的构造

字典的构造和列表构造类似,但是使用的是 **

dict = {"name": "harry", "age": 40}
new_dict = {"gender": "male", **dict}
print("构造后的字典:{}".format(new_dict))
# 运行结果
# 构造后的字典:{'gender': 'male', 'name': 'harry', 'age': 40}

函数的参数

不定长参数

函数的参数在定义时前面加上 * 表示不定长参数,最后输入的左右参数将会作为列表传入函数中

# 求和函数
def add(*numbers):
sum = 0
for number in numbers:
sum += number
return sum

调用函数能传入不定长的参数:

# 可以传入任意数目的参数
sum = add(1, 2, 3)

如果想将列表中元素作为参数传入,则要使用 *

list = [1, 2,3]
sum = add(*list)

不定长的关键字参数

所谓关键字参数,就是传入参数的时候,不仅传入参数的值,还传入参数的名称。** 定义的不定长关键字参数将会作为字典的形式传入函数。

def change(obj, **attrs):
for key, val in attrs.items():
obj[key] = val
person = {"name": "harry", "age": 30, "gender": "male"}
print("修改前:{}".format(person))
# 调用方式
change(person, age=40, name="jack")
print("修改后:{}".format(person))
# 运行结果
# 修改前:{'name': 'harry', 'age': 30, 'gender': 'male'}
# 修改后:{'name': 'jack', 'age': 40, 'gender': 'male'}

限制函数的参数

只能使用关键字参数

第一个参数使用 *

def self_introduce(*, name, age):
print("大家好,我是 {}, 今年 {} 岁。".format(name, age))

只能使用位置参数

最后一个参数使用 /

def self_introduce(name, age, /):
print("大家好,我是 {}, 今年 {} 岁。".format(name, age))

参考资料

  1. 彻底掌握Python中 * 号 - wang_yb
  2. Python中的*(星号)和**(双星号)完全详解 - zkk9527
Python学习:星号的作用
/blog/26031560
作者
发布于
2026/3/26
许可协议
CC BY-NC-SA 4.0