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