python - 如何在 Python 中混合使用多个可选参数?

标签 python python-3.x function tuples

我想编写带有默认参数和多个参数的函数。现在我有这样的想法:

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)

另一种方法是检查sizetype 是否是numbers.Number 的实例,然后假设它是大小,否则它是一个浇头,应该添加到 toppings 元组的开头......并且应该将大小重置为默认值。

或者您始终可以指定尺寸。

但是我更喜欢仅包含关键字的参数,因为这正是它们要解决的问题。

关于python - 如何在 Python 中混合使用多个可选参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44074224/

相关文章:

python - 如何制作功能类似于枚举而不实际使用枚举的代码?

c++ - 使用输入参数作为输出

python - 没有迭代器和/或循环的 Numpy 数组的组合/笛卡尔积

python - 在hough函数中传递math.pi(pi编号)的原因是什么?

python - 在 Python 中使用 mysql.connector 处理格式参数失败

python - Pandas 数据框重排堆栈到两个值列(用于因子图)

Django 将请求数据传递给 Forms.py

c - 考虑到函数被调用的次数,您将如何继续操作 C 中函数的返回值?

python - PySide2 QDialog 可能存在的错误

Python:响应命令行提示