通过kwargs添加函数选项(例如,详细)

问题描述 投票:-1回答:1

我正在尝试有效地添加可选功能,以便一些类功能。对python来说很新,所以我正在努力学习好习惯。我通过**kwargs实现这一点(无论好坏)。

一个这样的例子是添加一个'verbose'选项,它在整个函数中添加了几个条件打印语句,并且在这里作为单元测试就足够了。有很多关于**kwargs用于变量的SO Q + As(和其他教程),但关于用作执行标志的用法较少。

我的参考框架是在重载和切换语句方面进行思考,所以如果存在各种try,我就会使用**kwargs语句。

无法复制和粘贴,所以这里有一些基本的例子:

class Fruit:
    def __init__(self, name):
        self.name = name

class Bowl:
    def __init__(self):
        self.contents = []

    def fill_bowl(self, *fruit, **options):
        self.fruit_list = []
        for x in options:
            if options.get(x) == 'verbose':
                verbose = 1
            else:
                verbose = 0

从这里,我将添加几个if verbose == 1: print... Fruit的各种属性我添加到碗,内容的数量等,以帮助进行健全性检查,而无需深入调试。

这是有用的,除非在键入此内容时出现一些转录错误。我是在正确的轨道上,还是有更直观的方式来实现这一目标?

python kwargs
1个回答
1
投票

你不应该在这里使用kwargs。这适用于您需要接受未知选项的情况。在这里,我知道你想接受什么:一个冗长的参数。要使其可选,您可以为其指定默认值。

def fill_bowl(self, *fruit, verbose=0):

虽然你应该使用True和False而不是1和0。

(并注意即使你确实想要使用kwargs,树也没有理由像这样迭代dict;你只会做if kwargs.get("verbose")。)

© www.soinside.com 2019 - 2024. All rights reserved.