1. Python / Говнокод #16614

    −102

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    def booleanize(value):
        """Return value as a boolean."""
    
        true_values = ("yes", "true", "1")
        false_values = ("no", "false", "0")
    
        if isinstance(value, bool):
            return value
    
        if value.lower() in true_values:
            return True
    
        elif value.lower() in false_values:
            return False

    В комментариях не нуждается.

    Запостил: Niyakiy, 29 Августа 2014

    Комментарии (5) RSS

    • А если ни там, ни там - то возвращаем None, который False?
      Ответить
    • а мне нравится. (за исключеним отсутствующего возврата, само собой разумеется.)
      Ответить
      • > за исключеним отсутствующего возврата
        Троичная логика, как в SQL. Не True и не False - значит вернем None. Хотя
        return None
        не помешало бы.
        Ответить
        • я не исключаю что постер одну строчку при копипасте забыл.

          на самом деле с точки зрения парсинга ввода пользователя, код весьма неплох.

          по моему опыту, правильнее проверять на истину (case insensitive yes, yeah, ja, bitte, да и не ноль) а все остальное считать ложным. но красивее бы от этого код не стал.
          Ответить
          • А мне кажется, что лучше проверять и на истину и на ложь, а если ни то ни другое - упасть с исключением/ошибкой. Ибо конфиги правятся относительно редко, и хочется сразу знать, что прога меня поняла правильно, а не тупо нераспарсила строчку конфига и оставила какую-нибудь важную опцию отключенной.

            Парсинг конфига, имхо, совсем не то место, где нужна отказоустойчивость... И обо всех ошибках в конфиге лучше сообщать сразу же - админ спасибо скажет.
            Ответить

    Добавить комментарий