定义可变参数,仅仅在参数前面加了一个 *
号。在函数内部,参数 params
接收到的是一个tuple。调用该函数时,可以传入任意个参数,包括0个参数。
def test(*params):
print("有%d个参数"%len(params))
print("他们分别是:",params)
print("第一个参数是:",params[0])
test('hello','world')
nums = ['you', 'love', 'me']
# *nums表示把nums这个list的所有元素作为可变参数传进去
test(*nums)
输出结果为:
有2个参数
他们分别是: ('hello', 'world')
第一个参数是: hello
有3个参数
他们分别是: ('you', 'love', 'me')
第一个参数是: you
若没有将在 nums 前加 * ,则params接受的参数为 (['you', 'love', 'me'], )
def test(*params):
print("有%d个参数"%len(params))
print("他们分别是:",params)
print("第一个参数是:",params[0])
nums = ['you', 'love', 'me']
test(nums) # 注意,这里直接将列表 nums 作为tuple传入给参数 params
输出结果为:
有1个参数
他们分别是: (['you', 'love', 'me'],)
第一个参数是: ['you', 'love', 'me']
此时,若试着打印第二个参数,则会出现越界错误, tuple index out of range 。
def test(*params):
print("有%d个参数"%len(params))
print("他们分别是:",params)
print("第二个参数是:",params[1])
nums = ['you', 'love', 'me']
test(nums)
输出结果为:
有1个参数
他们分别是: (['you', 'love', 'me'],)
----> 4 print("第二个参数是:",params[1])
IndexError: tuple index out of range