2016-06-03 3 views
0

Этот вопрос не в том, чтобы быть совершенным.Python bool сравнение vs строка сравнение

Я сталкиваюсь с тем случаем, когда мне нужно получить параметр из сообщения и проверить, является ли оно True или False (в python), и соответственно называть LOC.

Очевидно, что считанные параметры имеют тип <str> и if param: всегда возвращают True.

У меня было два варианта теперь,
1. Преобразовать <str> в <bool> (написать собственный код для преобразования, или использовать ast.literal_eval или импортировать from distutils.util import strtobool)
2. Выполните сравнение строк как if param == "True":

Вопрос заключается в какова была бы лучшая практика?

+0

Пожалуйста, Складывающиеся избиратели объясняют причину. –

ответ

2

Я бы, конечно, не пошел по пути преобразования строки в логическое, это слишком много накладных расходов для простой логической инструкции. Сначала вы должны убедиться, что параметр имеет значение «True» или «False».

Тогда:

if (param == 'True'): 
    # True code here 
else: 
    # False code here 
+0

Вы правы, параметр '' уже взял память, и преобразование ее в bool добавит дополнительные служебные данные. –

0

Вопросы памяти:

For String 
sys.getsizeof("True") 
>> 41 
sys.getsizeof("False") 
>> 42 

For Boolean 
sys.getsizeof(True) 
>> 24 
sys.getsizeof(False) 
>> 24 
+0

Но тогда у вас есть накладные расходы на преобразование строки в bool, как сказано в @Adam Probert –

+0

Преобразование из строки в bool .... >> bool («True») –

+0

Я проверяю накладные расходы на выполнение преобразования. Будет опубликован результат после запуска теста. –

Смежные вопросы