Python学习:星号的作用
算术运算
最基本的 * 作为乘法运算符就不必多说了
构造与结构
构造列表
构造列表时,在变量前面添加 * 相当于将元素从列表中“提取”出来,放入新的列表
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_lstprint("列表第一个元素:{}".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))参考资料
Python学习:星号的作用
/blog/26031560