2016-12-06 11 views

ответ

1

В этом контексте «протокол» - это API. И «прерывание цепи» может быть легче понято другой фразой «короткое замыкание». Как и в:

if text is None or not text.startswith("lorem"): 
    raise RuntimeError("text should exist and start with 'lorem'") 

Поскольку text.startswith() только правильный код, если text не None, приведенный выше код «короткое замыкание», используя or оператор, который не мешает оценить правую руку аргумент, если левая рука правда. Точно так же оператор and замыкается, если левая ложь (потому что результат тогда должен быть ложным).

Таким образом, точка этого PEP заключается в том, чтобы улучшить возможности для создания выражений, которые могут замыкаться более сложными способами.

+0

Спасибо, Джон за ваш хороший ответ. Я думаю, что в вашем заявлении «Так как text.startswith() является только допустимым кодом, если текст не является ни одним», вы хотели сказать «... если текст« Нет »(удаление« не »)? – Simplicity

+0

@ Простота: Нет, я написал правильно. Если текст None, вы не можете работать с ним. –