0

我在我的类中多次调用外部库的方法,如下所示:

class MyClass:

    const_a = "a"
    const_b = True
    const_c = 1

    def push(self, pushee):
        with ExternalLibrary.open(self.const_a, self.const_b, self.const_c) as el:
            el.push(pushee)

    def pop(self):
        with ExternalLibrary.open(self.const_a, self.const_b, self.const_c) as el:
            return el.pop()

包含该with语句的行困扰着我,因为它们每次都需要将常量作为参数传递。我想将参数存储在像元组这样的预定义数据结构中,并将其传递给外部库。

4

1 回答 1

3

你可以这样做:

args = (const_a, const_b, const_c)
ExternalLibrary.open(*args)

*语法将可迭代对象(元组、列表等)解包为函数调用中的各个参数。还有一种**将字典解包为关键字参数的语法:

kwargs = {'foo': 1, 'bar': 2}
func(**kwargs) # same as func(foo=1, bar=2)

您也可以在同一个调用中同时使用两者,例如func(*args, **kwargs).

于 2012-11-19T20:04:16.060 回答