Python:传递任意数量实参


有时在编写一个函数时,并不知道函数需要接受多少个实参。比如,要制作一个披萨,它需要接受很多配料,你并不能预先知道顾客需要多少种配料。

def make_pizza(*toppings):
    """打印顾客点的所有配料"""
    print("\nMaking a pizza with the following toppings:")
    for topping in toppings:
        print("-"+topping)
    
make_pizza('pepperoni')
make_pizza('mushrooms','green peppers','extra chees')

形参名*toppings让Python创建一个名为toppings的空元组,并将收到的所有值都装入这个元组中。

结合使用位置实参和任意数量实参

如果要让函数接收不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后。
例如,函数还需要一个表示披萨尺寸的实参。

def make_pizza(size, *toppings):
    """打印顾客点的所有配料"""
    print("\nMaking a" + str(size) + "-inch pizza with the following toppings:")
    for topping in toppings:
        print("-" + topping)

make_pizza(16,'pepperoni')
make_pizza(12,'mushrooms','green peppers','extra cheese')

使用任意数量的关键字实参

有时需要接受任意数量的实参,但预先不知道传递给函数的会是什么样的信息。在这种情况下,可将函数编写成能够接受任意数量的键值对——调用语句提供了多少就接受多少。

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)

文章作者: 恰醋
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 恰醋 !
评论
  目录