Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
В официальной документации дается очень простое введение, а следующие три примера позволяют нам быстро понять, как его использовать.
По сути, это нулевая операция, которая ничего не делает, но позволяет интерпретатору проверить правильность синтаксиса, прежде чем пропустить его.
В отличие от других непустых операций, таких как return, break, continue и yield, pass не изменяет порядок выполнения программы. Он подобен комментарию, который занимает строку кода, но не влияет на область видимости, в которой он находится.
Однако, если у вас есть опыт работы с другими языками программирования, вы можете задаться вопросом, почему в Python есть этот уникальный оператор pass, а в других языках его нет.
Какова была причина разработки Python? Была ли это попытка решить общие проблемы, с которыми сталкивается большинство языков программирования, или это было сделано из-за собственных новых открытий, что привело к созданию новой функции?
Другими словами, почему в Python есть оператор "pass", какие проблемы (преимущества) он решает и какие проблемы (недостатки) возникли бы без него?
В этой статье анализируются причины, побудившие Python создать оператор pass, с двух точек зрения.
Во-первых, с человеческой точки зрения, pass можно использовать в качестве заполнителя пространства. Это лаконичный способ сказать "зарезервируйте место здесь и вернитесь, чтобы заполнить конкретную реализацию кода позже".
Например, в многоуровневой структуре if-elif-else мы можем сначала написать условные утверждения, а затем написать pass в соответствующем блоке для последующего заполнения. Pass также можно использовать в определениях классов или функций, чтобы сначала написать имя и параметры, а затем пропустить основной код, который будет заполнен позже.
Pass легко написать, а поскольку это ключевое слово, IDE выделяет его заметным цветом, что делает его более удобным, чем написание комментариев.
Утверждение "pass" служит в качестве местозаполнителя в пространстве и в основном облегчает нашу концептуализацию локальной структуры кода, предоставляя некоторые полезные напоминания.
Однако, как способ комментирования, pass слишком тонок и не может сравниться с написанием "# todo: xxxx", которое является более явным и также может быть выделено IDE. Хотя pass прост в написании, он вводит, казалось бы, лишнее ключевое слово.
Поэтому с точки зрения заполнителя пространства, pass не является необходимым элементом дизайна в языках программирования. Он может выражать семантику "что-то здесь есть, но временно пропущено", но его можно заменить содержимым комментария, если оно недоступно.
Во-вторых, с точки зрения машины, pass используется для полноты синтаксиса. Когда мы используем pass, мы обычно размещаем его на строке ниже двоеточия и в блоке кода с тем же отступом, и там есть только это одно утверждение.
Мы можем представить, что произойдет, если мы не напишем его. Ответ заключается в том, что он сообщит об ошибке отступа: "IndentationError: expected an indentented block".
# Removing the "pass" statement from the function body will result in an error. def func():
func()
Это происходит потому, что Python использует отступы для разделения блоков кода, а двоеточие указывает на то, что скоро появится новый блок кода с отступом. Поэтому данный пример сообщает об отсутствии блоков кода с отступами.
Если мы заменим pass комментарием, он также сообщит об ошибке: "IndentationError: expected an indentented block".
# Replacing the "pass" statement in the function body with a comment. def func(): # todo:There is something here that will be filled in later func()
Это происходит потому, что комментарий не является допустимым синтаксическим содержимым, и он будет проигнорирован интерпретатором Python, в отличие от оператора pass, который является "допустимым синтаксическим содержимым, но пропускается".
Другими словами, блок кода с отступом должен содержать синтаксически значимое содержимое. Все следующие примеры являются допустимыми.
def func(): """This is a string"""
def func2(): 123456
Python должен включать тело функции при определении функции, что означает, что он должен включать семантику как объявления, так и определения. Он не может определить пустую функцию, как некоторые языки, например, написать "void test(){}".
Поэтому при определении пустой функции в Python она должна иметь действительное тело функции, поэтому для представления нулевой операции был разработан оператор pass. Он служит для дополнения полноты синтаксиса и вместе с двоеточием эквивалентен паре пустых фигурных скобок в других языках.
С точки зрения сохранения целостности синтаксиса, это необходимый элемент дизайна. Если он отсутствует, вместо него следует использовать аналогичное пустое утверждение или специальный символ.
В итоге, pass может представлять значение "временно пропущен" как временное место для людей, которое в конечном итоге будет заменено фактической реализацией кода. Для машин он может представлять значение "пропущен непосредственно", только для завершения логики синтаксиса и не будет заменен другим кодом.
С точки зрения полноты синтаксиса, это необходимый элемент конструкции, и если его нет, он должен быть заменен аналогичными пустыми утверждениями или специальными символами.
В других языках программирования нет специального утверждения или символа для представления такого рода заполнителя (т.е. семантика отсутствует), но им также не нужно тратить усилия на разработку ключевого слова специально для обеспечения целостности синтаксиса (т.е. полноты синтаксиса).
Возвращаясь к вопросу в начале статьи: почему в Python есть оператор "pass", какие проблемы (преимущества) он решает, и какие проблемы (недостатки) возникли бы без него?
Python использует оператор "pass" для поддержки блоков кода с чисто пустыми операциями (пустые функции, пустые классы, пустые блоки управления циклами и т.д.). С его помощью можно выразить дополнительную семантику заполнителя.
Первое необходимо для машины и эквивалентно использованию пустых скобок в других языках программирования. Второе не нужно для человека и может быть выражено через комментарии. Однако, поскольку Python разработал это утверждение, такое использование иногда весьма удобно.
05.05.2023 11:59
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря своим методам, они делают код очень простым для понимания и читабельным.
05.05.2023 11:57
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний, то, не теряя времени, практикуйте наш бесплатный онлайн тест 1100+ JavaScript MCQs и развивайте свои навыки и знания.
05.05.2023 09:26
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут вам настроить, как будет выглядеть ваш сайт Temple, и вы можете настроить его дизайн в зависимости от ваших потребностей в дополнение к более чем 15+...
04.05.2023 13:44
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science, веб-разработки, этот язык программирования по-прежнему остается в тренде.