PyCharm намекнул, что «foo» может быть неопределенным, но как? - PullRequest
1 голос
/ 25 апреля 2020

Я работаю с Python в PyCharm и натолкнулся на странный намек IMO.

Следуя простому примеру:

myNumbers = [0, 1, 2]
for val in myNumbers:
    if val == 1:
        foo = 1
        break
    else:
        foo = 2
print "Foo is: ", foo

В последней строке для переменной "foo" PyCharm говорит: «Имя« foo »может быть неопределенным».

Мне интересно, почему и как? В каком случае это могло бы произойти?

Я знаю, что для данного фрагмента, в частности, "foo" всегда равен 1, а ветвь else никогда не выполняется, но сейчас это незначительно.

Спасибо за ваш помощь!

Ответы [ 2 ]

0 голосов
/ 25 апреля 2020

Вероятно, это Python 3+, и вы пропустили скобки в функции print ().

myNumbers = [0, 1, 2]
for val in myNumbers:
 if val == 1:
    foo = 1
    break
 else:
    foo = 2
print("Foo is: ", foo)
0 голосов
/ 25 апреля 2020

myNumbers = [0, 1, 2] for val in myNumbers: if val == 1: foo = 1 break else: foo = 2 print( "Foo is: ", foo)

вы забыли ()

, что говорит, что foo не может быть неопределенным, потому что вы не можете просто написать "foo" в коде

, вам нужно скажи что надо с этим делать. :)

так: напомнить:

print ()

...