Почему PyCharm выдает предупреждение «не используется» для локальной переменной? - PullRequest
0 голосов
/ 21 июня 2019
weather_str = None
if isinstance(weather, list):
     weather_str = "\n\n".join(weather)
 else:
     weather_str = weather
 dispatcher.utter_message(
        "{}'s weather on {}:\n {}\n ".format(location, date, 
     weather_str)
 )

PyCharm показывает "weather_str" серым цветом и предупреждает, что:

Local variable 'weather_str' not used

Почему это так?Это ясная, но раздражающая ложная тревога?

1 Ответ

2 голосов
/ 21 июня 2019

Видно, что в

if isinstance(weather, list):
    weather_str = "\n\n".join(weather)
else:
    weather_str = weather

weather_str всегда будет присвоено чему-либо, поэтому значение None, присвоенное ему непосредственно перед этим, никогда не будет использовано.

Хорошо избавиться от этой первой строки. Согласно Модель исполнения Python , «Если в блоке определена локальная переменная, ее область действия включает этот блок». Далее: «Ниже приведены блоки: модуль, тело функции и определение класса». Таким образом, условные операторы не создают новую область видимости.

См. Также этот вопрос для дальнейшего обсуждения

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