По сравнению с такими языками, как Perl, Python имеет ограниченное количество управляющих конструкций:
- только
if
и нет unless
,
- только
for
то, что перебирает последовательности и нет foreach
или C-стиль for
,
- только
while
то, что проверяет условие каждый цикл и нет do-while
,
- только
if-elif
и нет switch
,
- есть только одна конструкция комментария,
#
и для каждой строки вы можете сказать, закомментирована она или нет, не глядя на предыдущие строки.
Кроме того, есть почти один способ сделать отступ в вашем источнике; большинство случаев творческого отступления синтаксически исключены.
Это облегчает анализ исходного кода Python для людей.
Есть попытки быть минимальными, но полными во встроенных типах и стандартной библиотеке.
- для изменяемого списка вы используете только встроенный
list
тип; это O (1) для большинства операций, и вам никогда не придется выбирать правильную реализацию,
- для неизменяемых списков, в равной степени, вы просто используете
tuple
тип,
- для карт вы используете единственную встроенную систему,
dict
которая в большинстве случаев чертовски эффективна, не нужно задумываться о том, какую реализацию использовать.
Python 3 расширяет это до целых чисел: независимо от того, насколько велико ваше целое число, вы используете один и тот же тип и никогда не заботитесь о принуждении.
Python пытается избежать синтаксического сахара. Но иногда это добавляет синтаксический сахар, чтобы сделать очевидный путь очевидным. Вы можете написать if foo is not None
вместо, if not (foo is None)
потому что «не» в специальном случае. Все еще foo is not None
читает легко, не может быть неправильно истолковано, и вам не нужно думать, вы просто пишете очевидную вещь.
Конечно, большинство более сложных вещей в Python могут быть выполнены несколькими способами. Вы можете добавлять методы в классы посредством объявления или простого назначения слотов, вы можете передавать аргументы в функции различными способами и т. Д. Это только потому, что внутренняя часть языка в основном представлена.
Ключевым моментом является то, что всегда есть один способ, который предназначен для того, чтобы быть лучшим, все дело. Если существуют другие способы, они не были добавлены как равные альтернативы (как if
и unless
), а просто раскрывают внутреннюю работу. Медленно, но неуклонно такие альтернативы устаревают (не исключаются!) За счет усиления известного лучшего механизма.
Декораторы переносят вызовы функций АОП. До версии 2.6 вам приходилось использовать __metaclass__
магический член для объявления метакласса класса; теперь вы можете использовать тот же синтаксис декоратора для этого тоже. До версии 3.0 у вас было два вида строк: байтово-ориентированные и Unicode, которые вы могли непреднамеренно смешивать. Теперь у вас есть единственный Unicode str
и единственный двоично-прозрачный bytes
, который вы не можете смешать по ошибке.
"""
комментарии (строки документации). Они охватывают несколько строк.