Как проверить, пуста ли переменная в 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
всегда возвращают один из своих операндов.)