Як використовувати оператор «Pass» у Python

Під час написання програми ви рідко пишете весь код за один раз і запускаєте код лише в кінці. Замість цього ви, швидше за все, напишете трохи коду, запустите програму, напишете ще трохи та повторите, доки не закінчите.

По суті, ви розділятимете і керуйте своєю програмою, зосереджуючись на деяких основних частинах і пропускаючи інші, а потім повертаючись, щоб заповнити прогалини. Щоб зробити це ефективно в Python, ви повинні використовувати інструкцію pass, тему цієї статті.

Що таке твердження «Pass»?

На відміну від більшості ключових слів, які наказують інтерпретатору щось робити, оператор pass є унікальним, оскільки він наказує інтерпретатору нічого не робити. Використовується всередині блоків.

Блоки в Python — це рядки коду з відступом під функціями, класами або операторами потоку керування. Оператори потоку керування — це оператори, які змінюють звичайне виконання програми зверху вниз, або пропускаючи код за допомогою умовних умов, або повторюючи виконання коду за допомогою циклів. Загальні ключові слова потоку керування в Python: if, for і while.

Потреба заяви про проходження

Раніше я пояснював, що оператор pass — це оператор, який нічого не робить. Але навіщо нам оператор, який нічого не робить, коли будуємо програму, яка щось робить? У цьому розділі я поясню випадки використання оператора pass.

#1. Заповнювач для майбутньої реалізації

Як згадувалося у вступі, під час кодування корисно розділяти та володарювати під час написання вашої програми. Наприклад, під час написання функції ви можете створити заголовок функції та повернутися до написання тіла функції пізніше.

Але інтерпретатор Python буде кричати на вас, якщо ви спробуєте запустити код. Це тому, що Python очікує, що тіло функції або будь-який блок коду містить принаймні один оператор. Ось приклад функції, яку я маю у файлі Python:

def my_function():
    # Will write the code later
    # For now there are no statements

Тепер, якщо я спробую виконати код, я отримаю синтаксичну помилку, яка говорить приблизно так:

File "<ipython-input-1-58189b01193e>", line 3
    # For now there are no statements
                                     ^
SyntaxError: incomplete input

Наша стратегія «розділяй і володарюй» не спрацює, якщо ми напишемо все заздалегідь, але Python потребує, щоб ми написали хоча б щось. Заява про перепустку допомагає в цьому відношенні. Технічно це твердження, тому, якби ви включили його в блок, Python не кричав би на вас. І все ж він нічого не робить, тому вам не потрібно турбуватися про логіку функції. Ось попередня функція з оператором pass.

def my_function():
    # Will write the code later
    # For now we only have the pass statement
    pass

Тепер, якщо ми запускаємо код, ми не отримуємо помилок.

  Посібник для початківців з односторонніх відеоінтерв’ю [+2 Platforms]

Ви також можете викликати функцію, щоб підтвердити, що вона нічого не робить.

По суті, це основний випадок використання оператора pass у Python – як заповнювач для порожніх блоків коду. Це не обов’язково повинні бути лише функції, але й працювати з умовами, циклами та класами.

#2. Реалізація абстрактних класів та інтерфейсів

Інструкцію pass також можна використовувати для реалізації абстрактного класу. Абстрактний клас – це клас, який реалізує абстрактні методи, а абстрактний метод – це метод, який визначений, але не реалізований. Це схоже на випадок використання, визначений вище, де ми використовували оператор pass як заповнювач. Однак, на відміну від попереднього випадку, коли виписка про дозвіл була лише тимчасовою, у цьому випадку вона є постійною.

Абстрактні класи — це базові класи, які визначають методи, які мають реалізовувати суперкласи, успадковані від них. Абстрактні класи не реалізують жодної логіки; вони визначають методи, які складають успадковані від них класи. Як наслідок, ви не створюєте базовий клас безпосередньо.

  Як з’єднати Apple AirPods Pro з будь-яким пристроєм

Для створення абстрактних класів у Python ви використовуєте декоратор @abstractmethod і клас ABC, визначені в пакеті abc. Якщо ви не знайомі з декораторами або забули про них, ось стаття про декоратори в Python.

Як я вже казав, пакет abc визначає декоратор @abstractmethod і клас ABC, які ми будемо використовувати наступним чином:

from abc import (abstractmethod, ABC)

class BasicClass(ABC):

    @abstractmethod
    def basic_method(self):
        # Basic method is a method that any superclass of BasicClass should implement
        # So we simply define it here and not implement it
        # So in the body we use the pass statement so its valid code
        pass

BasicClass успадковує клас ABC. Крім того, у нас є декоратор @abstrakmethod, визначений навколо basic_method. Тепер ви можете успадкувати цей клас і реалізувати basic_method.

class DerivedClass(BasicClass):
    def basic_method(self):
        print("Hello from the defined basic method")

Потім ви можете створити екземпляр цього класу та тестово запустити basic_method.

my_object = DerivedClass()

my_object.basic_method()

Коли ви запустите це, ви зможете отримати повідомлення, написане на екрані.

Hello from the defined basic method

#3. Нічого не робити з перехопленими винятками

Коли програма стикається з помилкою в Python, вона викликає виняток. Винятки є руйнівними, оскільки призводять до збою програми та припинення її виконання. Однак ви можете перехоплювати та обробляти винятки, щоб запобігти збою програми. Ви можете використовувати інструкцію pass, якщо не хочете робити нічого конкретного для обробки помилки. Ось приклад:

try:
    # code that will definitely raise an exception
    raise Exception('Some exception')
except:
    pass

Якщо ви запустите наведений вище код, нічого не станеться. Це відбувається тому, що виняток викликається та обробляється кодом у блоці винятків. Але цей код нічого не робить, тому нічого не відбувається. Зазвичай, за винятками, ви хотіли б реєструвати їх або обробляти їх витончено. Але якщо ви хочете нічого не робити, ви б це зробили саме так.

  Як змінити спосіб оплати Apple

Чим оператор Pass відрізняється від Break and Continue?

Інші ключові слова, які ви можете зустріти, це break і continue. Коротше кажучи, я поясню, що вони роблять, щоб ви могли побачити, чим вони відрізняються від оператора пропуску.

Інструкція Break

Оператор break використовується для виходу з циклу. Після цього кожна наступна ітерація циклу скасовується. Наприклад, припустімо, що ви пишете функцію лінійного пошуку. Коли елемент знайдено, немає причин продовжувати ітерацію до кінця списку. Було б сенс вирватися з циклу. Отже, ви б використали оператор break. Ось приклад функції лінійного пошуку:

def linear_search(values, search_value):
    for i in range(len(values)):
        if values[i] == search_value
            print("Value found at index", i)
            break

Продовжити заяву

Інструкція continue використовується для пропуску поточної ітерації в циклі. Якщо ви виконуєте ітерацію по списку чисел, коли ваша програма зустрічає оператор continue, вона зупинить поточну ітерацію та перейде до наступної ітерації. Цикл продовжує працювати. Нижче наведено приклад функції, яка використовує оператор continue. Програма подвоює всі непарні числа, тому список містить лише парні числа.

def make_even(nums):
    for i in range(len(nums)):
        if nums[i] % 2 == 0:
            # If the num is already even we jump to the next iteration using continue
            continue
        
        # Only odd numbers will get to this point
        # We double the number so it becomes even
        nums[i] *= 2

Сподіваємось, зрозумівши оператори break і continue, вам вдалося відрізнити їх від оператора pass.

Найкращі методи використання оператора Pass

✅ Пам’ятайте, що оператор пропуску зазвичай використовується як тимчасовий заповнювач; не забувайте замінити оператор пропуску фактичним кодом, коли будете готові.

✅ Якщо ви використовуєте оператор пропуску для чогось іншого, ніж як тимчасовий заповнювач, додайте коментар, пояснюючи, чому він там.

Заключні слова

У цій статті я пояснив інструкцію pass у Python, корисне ключове слово, яке дозволяє вам розділяти та володарювати під час написання коду. Інструкція pass також описана в документації Python.

Далі перегляньте типові типи помилок Python і способи їх вирішення.