我已经完成了这些问题,
- Python assigning multiple variables to same value? list behavior 左关注元组,我想只是变量可能是字符串,整数或字典
- More elegant way of declaring multiple variables at the same time
醇>
问题有一些我想问的问题,但接受的答案很复杂
所以我想要实现的目标,
我声明了这个变量,并且我希望将此声明减少到尽可能少的代码行。
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 = {}
什么是最简单,易于维护?
答案 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)