Python将多个变量初始化为相同的初始值

时间:2015-10-25 15:58:01

标签: python variables variable-assignment

我已经完成了这些问题,

  
      
  1. Python assigning multiple variables to same value? list behavior   左关注元组,我想只是变量可能是字符串,整数或字典
  2.   
  3. More elegant way of declaring multiple variables at the same time   
    问题有一些我想问的问题,但接受的答案很复杂
  4.   

所以我想要实现的目标,

我声明了这个变量,并且我希望将此声明减少到尽可能少的代码行。

details = None
product_base = None
product_identity = None
category_string = None
store_id = None
image_hash = None
image_link_mask = None
results = None
abort = False
data = {}

什么是最简单,易于维护?

6 个答案:

答案 0 :(得分:24)

我同意其他答案,但想在此解释重点。

对象是单例对象。将None对象分配给变量的次数,使用相同的对象。所以

x = None
y = None

等于

x = y = None

但你不应该对python中的任何其他对象做同样的事情。例如,

x = {}  # each time a dict object is created
y = {}

不等于

x = y = {}  # same dict object assigned to x ,y. We should not do this.

答案 1 :(得分:19)

首先,我建议你不要这样做。这是不可读的和非Pythonic。但是,您可以使用以下内容减少行数:

details, product_base, product_identity, category_string, store_id, image_hash, image_link_mask, results = [None] * 8
abort = False
data = {}

答案 2 :(得分:8)

details, producy_base, product_identity, category_string, store_id, image_hash, image_link_mask, results = None, None, None, None, None, None, None, None; abort = False; data = {}

我是怎么做的。

答案 3 :(得分:2)

我有一个单行lambda函数,可以帮助解决这个问题。

nones = lambda n: [None for _ in range(n)]
v, w, x, y, z = nones(5)

lambda与此相同。

def nones(n):
    return [None for _ in range(n)]

答案 4 :(得分:0)

这并不能直接回答问题,而是相关的-我使用一个空类的实例来对相似的属性进行分组,因此我不必通过列出来弄乱我的 init 方法他们全部。

class Empty:
    pass

class Application(tk.Frame):
    def __init__(self, master=None):
        super().__init__(master)
        self.w = Empty()          # widgets
        self.master = master
        self.pack()
        self.create_widgets()

    def create_widgets(self):
        self.w.entry = tk.Entry(self, bg="orange", fg="black", font=FONT)

What is the difference between SimpleNamespace and empty class definition?

答案 5 :(得分:0)

混合使用以前的答案:

def default(value, number):
    return [value] * number

v, w, x, y, z = default(20, 5)