我无法处理在python **kwargs
def ExecuteyourQuery(self, queryStatement, *args, **kwargs):
if self.cursorOBJ is not None:
resultOBJ = self.cursorOBJ.execute(queryStatement, *args,**kwargs)
self.resultsVal = resultOBJ.fetchall()
当我调用函数
时,以下语句可以正常工作ExecuteyourQuery('select * from item_table where x = :x and y:y', x, y)
但是当我给出一个额外的参数时,查询中没有提到,比如
ExecuteyourQuery('select * from item_table where x = :x and y:y', x, y, z)
它返回0作为输出
答案 0 :(得分:1)
当使用args作为函数的最后一个参数时,可以在正式参数之后传递任意数量的参数。 Args是tuple。
def my_method(farg, *args):
print('FARG: ', farg)
print('ARGS: ', args)
my_method('Formal Argument', 1, 2, 3)
当使用kwargs作为函数的最后一个参数时,可以在正式参数之后传递任意数量的命名参数。 Kwargs是dictionary。
def my_method(farg, **kwargs):
print('FARG: ', farg)
print('KWARGS: ', kwargs)
my_method('Formal Argument', kwarg_1 = 1, kwarg_2 = 2, kwarg_3 = 3)
当使用args和kwargs作为函数的最后一个参数时,可以传递任意数量的参数(将映射到args)和命名参数(在正式论证之后,当存在时,它将被映射到kwargs。
def my_method(farg, *args, **kwargs):
print('FARG: ', farg)
print('ARGS: ', args)
print('KWARGS: ', kwargs)
my_method('Formal Argument', 1, 2, 3, kwarg_1 = 1, kwarg_2 = 2, kwarg_3 = 3)
尝试一下,在控制台中查看结果,希望它能帮助您解决原始问题:)
答案 1 :(得分:0)
另一种方法是通过为参数设置默认值
def method(one, two, three=3):
print(one)
print(two)
if three != 3: # don't have to use it like this but it is a default value
print(three)
如果未填写参数,则设置默认值 如果已填充,它将否决默认值并使用该值
method(11, 22) # prints first two parameters
method(23, 54, 89) # prints all three
不确定这是否是您要寻找的东西,但这是另一种方式