扩展调用语法:传递参数
我有一个函数,长得像这样:
def getColumn(self, name, type, **args):
现在我想要一个函数
def getColumns(self, columns)
可以接收一个包含元组的元组,其中每个条目代表要传给getColumn的参数。不过,我希望不需要使用命名参数来指定名称和类型。
所以我希望不需要像这样使用:
def getColumns(self, columns):
columns = [self.getColumn(**data) for data in columns]
column_data = ( {'name' : 'myName', 'type' : 'myType', 'other' : 'myOther'},
{'name' : 'myName2', 'type' : 'myType2', 'other' : 'myOther2'})
我该如何去掉 'name':
和 'type':
呢?
2 个回答
1
def getColumns(self, columns):
columns = [self.getColumn(*data) for data in columns]
column_data = (('myName', 'myType', 'myOther'),
('myName2', 'myType2', 'myOther2'))
当然可以!请把你想要翻译的内容发给我,我会帮你把它变得更容易理解。
2
像这样吗?
column_data = (('myName', 'myType', {'other': 'myOther'}),
('myName2', 'myType2', {'other2': 'myOther2'}))
def getColumn(self,name,type,**rest):
pass
def getColumns(self,columns):
return [self.getColumn(name, type, **rest) for name, type, rest in columns]
你不需要解包 - 如果你在两个地方都把 rest
前面的 ** 去掉,这个函数就会接受一个字典。
如果你只是想不给参数起名字,可以像 gnibbler 建议的那样用 *args 来代替 **kwargs。