我想编写带有默认参数和多个参数的函数。现在我有这样的想法:
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')
但结果看起来很糟糕:
-意大利辣香肠
披萨有 30 厘米
披萨有意大利辣香肠厘米
- 奶酪
- cucumber
- 辣椒
披萨有 50 厘米
如果我想在第三行打印'10'而不是意大利辣香肠,我该怎么办?
最佳答案
好吧,因为您使用的是 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
。
现在,要指定大小
,您需要明确命名它:
make_pizza('pepperoni')
make_pizza('pepperoni', size=30)
另一种方法是检查size
的type 是否是numbers.Number
的实例,然后假设它是大小,否则它是一个浇头,应该添加到 toppings
元组的开头......并且应该将大小重置为默认值。
或者您始终可以指定尺寸。
但是我更喜欢仅包含关键字的参数,因为这正是它们要解决的问题。
关于python - 如何在 Python 中混合使用多个可选参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44074224/