Подтвердить что ты не робот

Что такое функция и как она работает на Python?

Я читаю PEP-3153, но я не понимаю, в чем проблема, к которой он хочет обратиться. Не могли бы вы объяснить?

4b9b3361

Ответ 1

Вы можете Google "Python coroutines" и получить много хорошей информации. Вот презентация (PDF) Я столкнулся некоторое время назад, и мне показалось, что это очень хорошо для меня, как и почему. Исходный код также доступен (это включает в себя PDF файл, поэтому, если вы хотите оба, просто скачайте это). Домашняя страница для этой презентации содержит ссылки на отдельные исходные файлы.

Ответ 2

Вы знаете, что такое генератор? Функция, которая может остановить ее обработку, чтобы она могла вернуть ( "yield" ) значение до возобновления, чтобы создать следующую.

Ну, сопрограмма (хотя PEP использует термин "cofunction" ), подобна этому, за исключением того, что ей никогда не нужно что-либо давать, и она может вместо этого переноситься в другую сопрограмму ( "кокаль" на языке PEP). Там всевозможные возможности использования этой возможности, такие как возможность создания того, что по существу является вашей собственной облегченной совместной программой для потоковой передачи поверх этого (я видел некоторые довольно аккуратные библиотеки шаблонов, сделанные таким образом), хотя это особенно полезно, когда вы можете передача между функциями, вызываемыми из сопрограмм.

Обратите внимание, что нет ничего, что требовало сопрограммы. Вы всегда можете написать код по-другому и обойтись без них. Иногда это намного сложнее (из-за необходимости более явного управления состоянием).

Ответ 3

Предложение по совместным функциям - это просто очистка существующих корповитов на основе python, которые, как известно, были основаны на генераторах (которые были связаны с канонической презентацией ). PEP объясняет мотивацию : делает сообщения об ошибках более явными, избегая путаницы определения, является ли функция генератором, при наличии ключевого слова yield, и упрощение делегирования между сопрограммами.