Видно, что в
if isinstance(weather, list):
weather_str = "\n\n".join(weather)
else:
weather_str = weather
weather_str
всегда будет присвоено чему-либо, поэтому значение None
, присвоенное ему непосредственно перед этим, никогда не будет использовано.
Хорошо избавиться от этой первой строки. Согласно Модель исполнения Python , «Если в блоке определена локальная переменная, ее область действия включает этот блок». Далее: «Ниже приведены блоки: модуль, тело функции и определение класса». Таким образом, условные операторы не создают новую область видимости.
См. Также этот вопрос для дальнейшего обсуждения