1.什么是Python任意实参列表?
在进行函数定义时,我们经常会遇到参数的个数不确定的情况。例如,我们需要编写一个计算多个数值相加和的函数,但是我们无法预知用户会输入多少个数值。在这种情况下,我们就需要使用Python中的任意实参列表。
Python任意实参列表指可以传递任意数量的实参给函数。在函数定义时,我们可以在形参前添加一个星号(*)来创建一个空的任意实参列表,这样函数就可以接受任意数量的实参。
以下是一个简单的示例代码:
def sum_values(*values):
sum = 0
for value in values:
sum += value
return sum
print(sum_values(1, 2, 3)) # 6
print(sum_values(1, 2, 3, 4, 5, 6)) # 21
2.使用任意实参列表的注意事项
2.1 传递任意实参
调用函数时可以传递任意数量的实参。这些实参会被自动封装到一个元组中,并赋值给函数中的任意实参列表。在函数内部,我们可以使用普通的元组操作来访问这些实参。
以下是一个简单的示例代码:
def show_items(*items):
print("Items in tuple: ", items)
for item in items:
print("Item: ", item)
show_items("apple", "banana", "orange", "pear")
show_items(1, 2, 3)
输出结果:
Items in tuple: ('apple', 'banana', 'orange', 'pear')
Item: apple
Item: banana
Item: orange
Item: pear
Items in tuple: (1, 2, 3)
Item: 1
Item: 2
Item: 3
2.2 使用任意实参列表与位置实参混合使用
在函数定义时,任意实参列表通常是在形参列表的末尾。在函数调用时,也可以将任意实参列表与其他类型的实参混合使用。此时,要将任意实参列表放在形参列表的最后,以避免出现语法错误。
以下是一个简单的示例代码:
def make_pizza(size, *toppings):
print("\nMaking a " + str(size) + "-inch pizza with the following toppings:")
for topping in toppings:
print("- " + topping)
make_pizza(12, 'pepperoni')
make_pizza(16, 'mushrooms', 'green peppers', 'extra cheese')
输出结果:
Making a 12-inch pizza with the following toppings:
- pepperoni
Making a 16-inch pizza with the following toppings:
- mushrooms
- green peppers
- extra cheese
2.3 使用任意实参列表与关键字实参混合使用
可以使用任意实参列表与关键字实参混合使用。此时,要将任意实参列表放在形参列表的最后。
以下是一个简单的示例代码:
def build_profile(first, last, **user_info):
profile = {}
profile['first_name'] = first
profile['last_name'] = last
for key, value in user_info.items():
profile[key] = value
return profile
user_profile = build_profile('albert', 'einstein',
location='princeton',
field='physics')
print(user_profile)
输出结果:
{'first_name': 'albert', 'last_name': 'einstein', 'location': 'princeton', 'field': 'physics'}
3.总结
Python任意实参列表提供了一种灵活的方式来传递任意数量的实参给函数。我们可以将任意实参列表与位置实参、关键字实参混合使用,以达到更加灵活和方便的函数调用方式。在编写函数时,使用任意实参列表可以大大提高代码的灵活性和可维护性。