我注意到一个变量在不被直接询问的情况下改变了它的值。在这段代码中,我更改了no_style
变量的内容,但它也也更改了yes_style
的内容。为什么?
yes_style = no_style = basewidget.styleSheet().split(";")
yes_style[0] = "background-color: rgb(160, 200, 90)"
print(yes_style)
no_style[0] = "background-color: rgb(200, 0, 0)"
print(yes_style)
print(no_style)
这是照片:
['background-color: rgb(160, 200, 90)', 'color: rgb(50, 50, 50)', 'border: 1px solid rgb(100, 100, 100)', '']
['background-color: rgb(200, 0, 0)', 'color: rgb(50, 50, 50)', 'border: 1px solid rgb(100, 100, 100)', '']
['background-color: rgb(200, 0, 0)', 'color: rgb(50, 50, 50)', 'border: 1px solid rgb(100, 100, 100)', '']
更新:当然,一个简单的解决方法是:
base_style = sample.styleSheet().split(";")
# Yes style
yes_style = base_style
yes_style[0] = "background-color: rgb(160, 200, 90)"
yes_style = ";".join(yes_style)
# No style
no_style = base_style
no_style[0] = "background-color: rgb(200, 0, 0)"
no_style = ";".join(no_style)
print(yes_style)
print(no_style)
>>> background-color: rgb(160, 200, 90);color: rgb(50, 50, 50);border: 1px solid rgb(100, 100, 100);
>>> background-color: rgb(200, 0, 0);color: rgb(50, 50, 50);border: 1px solid rgb(100, 100, 100);
答案 0 :(得分:1)
在Python中,名称只是对象的标签。当您像执行操作一样分配倍数时,您只是在为一个对象赋予不同的标签。如果更改一个,则基础对象也将更改,并在另一个对象中得到反映。
答案 1 :(得分:1)
您必须单独声明:
yes_style = basewidget.styleSheet().split(";")
no_style = basewidget.styleSheet().split(";")
yes_style[0] = "background-color: rgb(160, 200, 90)"
print(yes_style)
no_style[0] = "background-color: rgb(200, 0, 0)"
print(yes_style)
print(no_style)