В этом коде here они используют os.environ
для получения значения переменной окружения, а затем сразу же проверяют, является ли это экземпляром своих пользовательских классов.Может ли Python «os.environ.get» возвращать нестроку?
value = os.environ.get(variable)
...
elif isinstance(value, ConfigList) or isinstance(value, ConfigTree):
Является ли это на самом деле возможно, что value
будет экземпляром своих пользовательских классов? Это мертвый код?
Ну, [документация состояния] (https://docs.python.org/3/library/os.html#os.environ) "Объект отображения, представляющий строку среды.". Это исключает многое другое. Python 3 имеет 'os.environb', если вы хотите использовать байты вместо' str'. Я не знаю, как переменная среды была бы 'ConfigList' или' ConfigTree', если только они не определены как 'str' (или' NoneType'). – Evert
Есть ли доказательства того, что код работает? Все это в обработчике исключений, и это не будет действительно сбой, если 'isinstance' всегда терпит неудачу. Возможно, что это всего лишь мертвый код, и никто не заметил, прежде чем вы это сделали;) – zvone
@zvone: Я действительно нашел его, глядя на строки, не охваченные их тестовыми примерами. Я не мог понять, как этот код может быть выполнен. Нечетная часть состоит в том, что этот код существует с самого начала. Этот код не является результатом рефакторинга. Ну, это случается со всеми нами иногда. – movermeyer