1. Не сравнивайте логические значения с истинными или ложными, используя ==.
Yes: if greeting: No: if greeting == True:
Хуже всего: если приветствие правда:
2. Для последовательностей, (строки, списков, кортежей) используйте тот факт, что пустые последовательности являются ложными.
Yes: if not seq: if seq: No: if len(seq): if not len(seq):
3. Сравнения типа объекта всегда должны использовать IsInstance () вместо непосредственного сравнения типов.
Yes: if isinstance(obj, int): No: if type(obj) is type(1):
При проверке, если объект является строкой, имейте в виду, что это тоже может быть строка Unicode! В Python 2 Str и Unicode имеют общий базовый класс, базовый базовый класс, так что вы можете сделать:
if isinstance(obj, basestring):
Обратите внимание, что в Python 3 Unicode и Basestring больше не существуют (есть только STR), а объект Bytes больше не является своего рода строкой (вместо этого это последовательность целых чисел).
Строковые методы всегда намного быстрее и имеют один и тот же API с строками Unicode. Переопределите это правило, если требуется обратная совместимость с питонами старше 2.0. Используйте ''.начинается с () и '' .endswith ()
Вместо нарезки строки, чтобы проверить префиксы или суффиксы. startSwith () и endswith () чище и менее подвержены ошибкам:
Yes: if foo.startswith('bar'): No: if foo[:3] == 'bar': No: if foo[:3] == 'bar':
Оригинал: “https://dev.to/taleb/python-comparison-tips-g6d”