Я использую его каждый раз, когда ссылаюсь на переменную экземпляра, даже если мне это не нужно. Я думаю, это делает код более понятным.
if not a:
print("List is empty")
Используя неявные булевы из пустых list
вполне pythonic.
Пустой список самостоятельно считают ложью в тестировании истинного значения (см. документация Python ):
a = []
if a:
print "not empty"
РЕДАКТИРОВАНИЕ @Daren Thomas
: Другая точка против тестирования пустого списка как Ложь: Что относительно полиморфизма? Вы не должны зависеть от списка, являющегося списком. Это должно просто шарлатан как утка - как Вы собираетесь получить свой duckCollection шарлатану ''Ложь'', когда это не имеет никаких элементов?
Ваш duckCollection должен реализовать __nonzero__
или __len__
так если a: будет работать без проблем.
BufferedOutputStream
всегда вызовы close()
на его базовом потоке вывода (таким образом на потоке вывода urlConnection
). См. docs.oracle.com/javase/6/docs/api/java/io/… и docs.oracle.com/javase/6/docs/api/java/io/… Поэтому, когда Вы звоните os.close()
, это уже должно было быть закрыто. Нет?
– obecker
1 July 2013 в 14:57
Я предпочитаю следующее:
if a == []:
print "The list is empty."
pythonic способ сделать это от руководство по стилю PEP 8 (где Да средства “recommended” и Никакой средства “not recommended”):
Для последовательностей, (строки, списки, кортежи), используют то, что пустые последовательности являются ложью.
Yes: if not seq: if seq: No: if len(seq): if not len(seq):
len()
O (1) операция для списков Python, строк, dicts, и наборов. Python внутренне отслеживает число элементов в этих контейнерах.
JavaScript имеет подобное понятие truthy/falsy.