我想用默认和多个参数编写函数。现在我有这样的想法:
def make_pizza(size=10, *toppings):
for t in toppings:
print("-",t)
print('Pizza has', size, 'cm')
后来我试着打电话:
make_pizza(30, 'pepperoni')
make_pizza('pepperoni')
make_pizza(50, 'cheese', 'cucumber', 'chilli')
但结果看起来很糟糕:
- pepperoni
Pizza has 30 cm
Pizza has pepperoni cm
- cheese
- cucumber
- chilli
Pizza has 50 cm
如果我想在第三行打印'10'而不是意大利辣香肠,我该怎么办?
答案 0 :(得分:4)
好吧,既然您使用的是Python 3,最简单的方法就是让size
成为keyword-only argument:
def make_pizza(*toppings, size=10):
for t in toppings:
print("-",t)
print('Pizza has', size, 'cm')
请注意size=10
必须关注 *toppings
。
现在,要指定size
,您需要明确命名它:
make_pizza('pepperoni')
make_pizza('pepperoni', size=30)
另一种选择是检查size
的类型,如果它是说numbers.Number
的实例,则假设它是大小,否则它是一个顶部,应该添加到toppings
元组的开头...并且大小应该重置为默认值。
或者您可以随时指定尺寸。
但是我更喜欢仅限关键字的参数,因为这正是它们要解决的问题。