В Python для l oop, если вы определите переменную как элемент для для l oop, будет ли она перезаписывать предыдущее определение? - PullRequest
0 голосов
/ 06 января 2020

Так что в этом примере, хотя вы больше не можете ссылаться на предыдущие loopRads, python, очевидно, все еще знает, что оно существует, верно? Вот почему, когда вызывается виджет радио-кнопки, он работает правильно? Таким образом, в основном Python знает, на какую loopRad вы ссылаетесь, когда нажимаете радиокнопки?

colors = ['red', 'blue', 'gold']

def radCall(*args):
    radSel = radVar.get()

    if radSel == 0:
        root.configure(background=colors[0])
    elif radSel == 1:
        root.configure(background=colors[1])
    elif radSel == 2:
        root.configure(background=colors[2])

for col in range(3):
    loopRad = ttk.Radiobutton(root, text=colors[col], variable=radVar, value=col, command=radCall)
    loopRad.grid(row=5, column=col, sticky='w')

1 Ответ

0 голосов
/ 06 января 2020

В loopRad = ttk.Radiobutton(root, text=colors[col], variable=radVar, value=col, command=radCall) вы переопределили любое предыдущее значение, присвоенное loopRad. Мало того, что переназначение является действительным внутри области действия l oop, оно также останется после него.

Кроме того, в Python, даже если переменная loopRad никогда не объявлялась до строка for col in range(3):, она будет по-прежнему доступна вне области действия l oop. Это не так в некоторых других языках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...