Как проверить, пуста ли переменная в python?

Мне интересно, имеет ли в python какую-либо функцию, такую ​​как php empty function (http://php.net/manual/en/function.empty.php), которые проверяют, является ли пустая переменная со следующими критериями

"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)

Ответы

Ответ 1

Да, bool. Это не совсем то же самое - '0' True, но None, False, [], 0, 0.0 и "" - все False.

bool используется неявно при оценке объекта в состоянии, таком как оператор if или while, условное выражение или логический оператор.

Если вы хотите обрабатывать строки, содержащие числа, как это делает PHP, вы можете сделать что-то вроде:

def empty(value):
    try:
        value = float(value)
    except ValueError:
        pass
    return bool(value)

Ответ 2

См. также этот предыдущий ответ, который рекомендует ключевое слово not

Как проверить, пуст ли пул в Python?

Он обобщает не только списки:

>>> a = ""
>>> not a
True

>>> a = []
>>> not a
True

>>> a = 0
>>> not a
True

>>> a = 0.0
>>> not a
True

>>> a = numpy.array([])
>>> not a
True

Примечательно, что это не будет работать для "0" в виде строки, потому что строка действительно содержит что-то - символ, содержащий "0". Для этого вам нужно преобразовать его в int:

>>> a = "0"
>>> not a
False

>>> a = '0'
>>> not int(a)
True

Ответ 3

См. раздел 5.1:

http://docs.python.org/library/stdtypes.html

Любой объект может быть проверен на значение истины, для использования в условии if или while или в качестве операнда следующих операций Boolean. Следующие значения считаются ложными:

None

False

ноль любого числового типа, например, 0, 0L, 0.0, 0j.

любая пустая последовательность, например '', (), [].

любое пустое отображение, например, {}.

экземпляров определяемых пользователем классов, если класс определяет метод __nonzero__() или __len__(), когда этот метод возвращает целое число 0 или значение bool False. [1]

Все остальные значения считаются истинными, поэтому объекты многих типов всегда верны.

Операции и встроенные функции с булевым результатом всегда возвращают 0 или False для false и 1 или True для true, если не указано иное. (Важное исключение: логические операции or и and всегда возвращают один из своих операндов.)