如何解元组*参数



我有一段代码,从sqlite查询数据库,并通过一个函数传递每一行,然后通过*args传递到一个类。问题是它每次经过*args时都会在它的末尾添加a,)。我每次都可以得到第0个下标在我传递它之后,我可以摆脱它但我并不总是有东西传递*args在这种情况下,它会出现一个下标超出范围的错误。我觉得有一种更简单的方法,只是我不知道。有什么建议吗?

不是下面的确切代码,但你知道我的问题。

from tkinter import *
from tkinter import ttk
class App(Tk):
def __init__(self,*args,**kwargs):
Tk.__init__(self)
btn1 = ttk.Button(self, command = self.EditLoadout)
btn1.pack()
def EditLoadout(self):
self.ticketquery = ['cat','hat','bat']
for x in self.ticketquery:
self.add_product(x)
def add_product(self, *args):
self.newprod = NewProduct(self,args)
self.newprod.pack(anchor=W)
class NewProduct(ttk.Frame):
def __init__(self,container,*args):
print(args)
Frame.__init__(self)  
my_app = App()
my_app.mainloop()

从你的代码中我可以看到,你试图通过将变量argsadd_product传递到NewProduct__init__函数来添加新产品。基于此,您所做的可能不是像您想象的那样解析参数。

一个*操作符用于将不确定数量的参数打包到Tuple对象类型中。如果打印一个Tuple,它看起来类似于这样:(1,2,3,4)当你将一个元组传递给另一个接受*args的函数时,你只传递了一个参数。

如果你想把args作为不确定数量的变量传递给另一个函数,你可以再次使用*args。下面是一个示例:

def tupleToList(*args):
print(list(args))
def passThroughFunction(*args):
print(args) # Prints (1, 2, 3, 4)
tupleToList(args) # Prints [(1, 2, 3, 4)]
tupleToList(*args) # Prints [1, 2, 3, 4]
passThroughFunction(1,2,3,4)

最新更新