Как вернуть false из строки, преобразованной в bool - PullRequest
0 голосов
/ 13 февраля 2020

Я не могу вернуть False в settings.py из docker (. Env)

DEBUG = os.environ.get('DEBUG_MODE') DEBUG_MODE=False

Python return:

x = False
bool(x)
False
print(bool(x))
False
x = 'False'
print(bool(x))
True

Как вернуть Ложь?

Ответы [ 3 ]

1 голос
/ 13 февраля 2020

Просто попробуйте

print(eval('False'))

Посмотрите на его использование в документации eval ()

0 голосов
/ 13 февраля 2020

ЛЮБАЯ строка является двоичным кодом в ascii. поэтому код

x = ' ' ; print(bool(x))    | >>> True   |

не равен нулю, даже если x = "" | где ["" = пробел]

, если вы хотите сделать, как вы сказали:

  • МЕТОД 1: [ type (x) == str ]:

    • return BOOLEAN True , если x = "anyString" & False , если другой тип
  • МЕТОД 2: [ isinstance (x, str) ]

    • return BOOLEAN True , если true, обернуть его str (Your_test) для получения сравнения строк
  • МЕТОД 3: Бесплатные логи c

    • изначально мы даем | x = 'False'
    • boolean_value = x! = 'False'
    • print (boolean_value) | >>> Неверно
    • двойной комплимент : boolean_value = x == 'True'
    • print (boolean_value) | >>> Неверно
0 голосов
/ 13 февраля 2020

Любая непустая строка является достоверной, поэтому bool('False') возвращает True.

Вы можете использовать простое сравнение:

print(x == 'True')

или вы можете использовать ast.literal_eval() для анализа любого Python буквальный.

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