如何去元组 *args

jh123

我有一段代码,它从 sqlite 查询数据库,并通过一个函数将每一行传递给一个类,然后通过 *args 传递给一个类。问题是它每次通过 *args 时都会在它的末尾添加一个 ,)。我每次通过它后都可以获得第 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()
普通书呆子

从我从您的代码中可以看出,您尝试通过将变量argsfrom传递add_product给 NewProduct__init__函数来添加新产品基于此,您所做的可能不会像您想象的那样解析 args。

一个*运算符用于将不确定数量的参数打包到元组对象类型中。如果你打印一个元组,它看起来类似于: (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)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章