Python 的星号映射是一种语法,主要用于函数的参数传递中的可变参数。它允许我们传递不定数量的参数,并将它们打包成一个元组或列表。这个语法的关键在于使用单个星号 * 将可变参数打包成元组,使用两个星号 ** 将可变参数打包成字典。下面是详细的使用说明和示例。
单个星号的星号映射
当我们需要传递不定数量的参数时,可以使用单个星号的星号映射。这样会将传入的参数打包成元组,这个元组的名称由我们自己指定。下面是一个函数示例。
def add(*numbers):
result = 0
for n in numbers:
result += n
return result
该函数接受任意数量的参数,并将它们打包成一个元组 numbers。然后函数内部可以对这些参数进行处理。
我们可以使用下面的方式调用这个函数:
result = add(1, 2, 3, 4, 5)
print(result) # 输出 15
在调用函数时,可以传入任意数量的参数,这些参数都会被打包成元组传给函数。
双星号的星号映射
双星号的星号映射可以将参数打包成一个字典。在函数定义时,使用两个星号将可变参数打包成字典,如下所示:
def print_info(**info):
for k, v in info.items():
print("%s: %s" % (k, v))
这个函数接受任意数量的关键字参数,并将它们打包成一个字典 info。在函数内部,可以通过遍历字典实现对这些参数的处理。
我们可以使用下面的方式调用这个函数:
print_info(name="Tom", age=18, gender="male")
# 输出
# name: Tom
# age: 18
# gender: male
在调用函数时,可以传入任意数量的关键字参数,这些参数会被打包成一个字典传给函数。
单星号和双星号的组合使用
在实际使用中,我们可能需要同时使用单星号和双星号的星号映射。这个时候,我们需要将可变参数分成两部分,一部分是由单星号打包成的元组,另一部分是由双星号打包成的字典。
下面是一个示例:
def print_person_info(name, age, **other_info):
print("name:", name)
print("age:", age)
for k, v in other_info.items():
print("%s: %s" % (k, v))
这个函数接受两个必填参数 name 和 age,以及任意数量的关键字参数。在函数内部,为了访问 name 和 age,我们不使用星号映射,而是直接使用参数名。对于其他关键字参数,我们使用双星号映射将它们打包成字典 other_info。
我们可以使用下面的方式调用这个函数:
print_person_info("Tom", 18, gender="male", hometown="Beijing")
# 输出
# name: Tom
# age: 18
# gender: male
# hometown: Beijing
在调用函数时,单星号打包的参数只能出现在双星号打包的参数之前,不能出现在双星号打包的参数之后。
以上就是 Python 运算符的星号映射的详细说明和示例。