Блоки кода в Python - PullRequest
       31

Блоки кода в Python

10 голосов
/ 20 апреля 2009

Можете ли вы рассказать о текущем состоянии "блоков" (в рубиновом смысле) в Python?

Какие языковые конструкции существуют в Python? Как они сравниваются с другими языками (такими как Ruby, Smalltalk, [вставьте больше])? Или у Python нет таких конструкций?

Я до сих пор понял вещь lambda; это только одна строка, но, возможно, это близко. Что насчет "декораторов" и yield в этом контексте?

Я также использую старые версии Python в некоторых проектах. Какие конструкции были представлены в какой версии Python (2.5, 2.6 и т. Д.) Или запланированы в будущих версиях?

Можете ли вы связать интересные статьи на эту тему, которые объясняют это для Python, а также сравнивают его с другими языками и могут быть интересны для тех, кто хочет расширить базовые знания Python?

Ответы [ 4 ]

10 голосов
/ 20 апреля 2009

Функции являются первоклассными членами в Python:

def add(x, y):
    return x + y

a = add          # Bind
b = a(34, 1)     # Call

Таким образом, вы можете передавать функции по своему усмотрению. Вы можете сделать то же самое с любым вызываемым объектом в Python.

3 голосов
/ 20 апреля 2009

Есть хорошие обсуждения на comp.lang.python, которые сравнивают с другими языками:

3 голосов
/ 20 апреля 2009

lambda является ближайшим эквивалентом блока Ruby, и ограничение в одну строку является преднамеренным . Обычно утверждается, что многострочные анонимные функции (блоки в Ruby) обычно менее читаемы, чем определение функции где-либо с именем и передачей этого, как показано в ответ SilentGhost .

0 голосов
/ 20 апреля 2009

def эквивалентно оператору присваивания, который только связывает объект функции с переменной ссылки на объект.

Переменная ссылки на объект может затем использоваться для вызова объекта функции для выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...