Какие особенности и ограничения были в Python 2 по сравнению с более поздними версиями
Python
Senior
Без компании
Какие особенности и ограничения были в Python 2 по сравнению с более поздними версиями
Ответы
Python 2 устарел, но его ключевые отличия от Python 3:
- **Принт без скобок**:
```
print "Hello" # Python 2
print("Hello") # Python 3
```
- **Целочисленное деление**:
В Python 2 `/` для целых чисел возвращало целое (если оба операнда целые), в Python 3 всегда float.
- **Unicode vs str**:
В Python 2 `str` — байты, `unicode` — Unicode-строка. В Python 3 `str` — Unicode, `bytes` — байты.
- **xrange() vs range()**:
В Python 2 `xrange()` — ленивый аналог `range()`. В Python 3 `range()` сам ленивый.
- **Итераторы вместо списков**:
Методы вроде `map()`, `filter()`, `dict.items()` в Python 2 возвращали списки, в Python 3 — итераторы.
- **Исключения**:
```
except Exception, e: # Python 2
except Exception as e: # Python 3
```
- **Сравнение типов**:
В Python 2 можно было сравнивать разные типы (`1 < '2'`), в Python 3 это вызывает `TypeError`.
- **Старый стиль классов**:
В Python 2 были "старые" классы (без наследования от `object`), в Python 3 все классы "новые".
- **input() и raw_input()**:
В Python 2 `input()` выполнял строку как код, `raw_input()` читал строку. В Python 3 `input()` — аналог `raw_input()`.
- **Отсутствие аннотаций и async/await**:
Python 2 не поддерживал аннотации типов, асинхронные конструкции (`async`/`await`).
Python 2 официально не поддерживается с 2020 года.