Есть ли техническая причина, по которой pass
необходимо использовать для express "бездействия" в python вместо того, чтобы позволить отсутствию утверждения обозначать это?
Согласно python3 .8 do c:
Оператор pass
ничего не делает. Его можно использовать, когда оператор требуется синтаксически, но программа не требует никаких действий ".
Далее следуют три следующих примера:
while True:
pass # Busy-wait for keyboard interrupt (Ctrl+C)
class MyEmptyClass:
pass
def initlog(*args):
pass # Remember to implement this!
Это выглядит как все эти варианты использования pass
обусловлены тем фактом, что каждое из ключевых слов while
, if
, class
, def
и т. д. c. требуют одного или нескольких следующих операторов с отступом. если бы язык был смягчен так, чтобы за каждым из этих ключевых слов могли следовать операторы zero -or-more, то, похоже, pass
не понадобится.
Если бы это было готово, тогда приведенные выше примеры можно записать в виде:
while True:
# Busy-wait for keyboard interrupt (Ctrl+C)
class MyEmptyClass:
def initlog(*args):
# Remember to implement this!
Есть ли техническая причина, почему это не сработает?
Что я прошу это либо:
пример, где разрешение отсутствия оператора вместо pass
может привести к неоднозначности синтаксического анализа, либо другая конкретная трудность синтаксического анализа (например, язык больше не используется) LL (1), , если это было раньше ) Или,
* 10 43 * убедительный аргумент, показывающий, что изменение грамматики python таким способом не вызовет такой сложности.
Комментарий к закрытие
Я не думаю, что это вопрос мнения; Я не предлагаю и не запрашиваю мнения о том, является ли pass
более или менее естественным, простым, читаемым, удобным или устойчивым к ошибкам, чем было бы отсутствие отсутствия утверждения.
В частности, ответ или комментарий, который включает слова «явный лучше, чем неявный», - это не то, что я в идеале ищу.
Я не верю, что это дубликат «Как использовать выражение pass» так как он не отвечает ни на один из ответов, в настоящее время прикрепленных к этому вопросу.