Оператор передачи pass в Python
Вы можете рассматривать функцию pass, как инструкцию «без операции». Чтобы лучше понять инструкцию pass, давайте рассмотрим пример синтаксиса ниже:
Теперь, если мы конвертируем вышеуказанные вещи в python:
#Generate a list of number numbers = [ 1, 2, 4, 3, 6, 5, 7, 10, 9 ] #Check for each number that belongs to the list for number in numbers: #check if the number is even if number % 2 == 0: #if even, then pass ( No operation ) pass else: #print the odd numbers print (number),
>>> ================== RESTART: /home/imtiaz/Desktop/pass1.py ================== 1 3 5 7 9 >>>
Где мы используем команду pass?
Прежде чем начать программировать, вы обычно начинаете со структуры функций. Эти функции сообщают вам, какие элементы будут в коде, и позволяют отслеживать задачи, которые еще предстоит выполнить.
Рассмотрим тот же пример, если планируете создать программу с тремя функциями, как показано ниже. Вы даете имена функциям, а затем начинаете работу над одной из функций.
Остальные функции не заполнены и имеют простой комментарий, в котором говорится, что это TODO:
def func1(): # TODO: implement func1 later def func2(): # TODO: implement func2 later def func3(a): print (a) func3("Hello")
Если вы сделаете это, вы получите сообщение об ошибке, как показано ниже:
Так как же выйти из этой ситуации? Здесь мы используем инструкцию pass:
def func1(): pass # TODO: implement func1 later def func2(): pass # TODO: implement func2 later def func3(a): print (a) func3("Hello")
Для приведенного выше кода вы получите следующий результат:
================== RESTART: /home/imtiaz/Desktop/pass3.py ================== Hello >>>
Когда вы работаете с огромным проектом на Python, вам может понадобиться оператор pass.
Оператор Python pass
Оператор передачи Python pass используется для создания пустых блоков кода и пустых функций.
Примеры операторов передачи Python
Давайте посмотрим на несколько примеров с использованием pass.
1. инструкция pass в блоке кода
Допустим, нам нужно написать функцию для удаления всех четных чисел из списка. В этом случае мы будем использовать цикл for для обхода чисел в списке.
Если число делится на 2, то ничего не делаем. В противном случае мы добавляем его во временный список. Наконец, верните вызывающему абоненту временный список, содержащий только нечетные числа.
Python не поддерживает пустые блоки кода. Таким образом, мы можем использовать здесь оператор pass для отсутствия операции в блоке if-condition.
def remove_evens(list_numbers): list_odds = [] for i in list_numbers: if i % 2 == 0: pass else: list_odds.append(i) return list_odds l_numbers = [1, 2, 3, 4, 5, 6] l_odds = remove_evens(l_numbers) print(l_odds)
Здесь нам не нужны никакие операции в блоке if-condition. Итак, мы использовали оператор pass для бездействия.
2. инструкция pass для пустой функции
В Python нет концепции абстрактных функций. Если нам нужно определить пустую функцию, мы не можем написать ее так.
def foo(): # TODO - implement later
Выход: IndentationError: ожидается блок с отступом
Мы можем использовать оператор pass для определения пустой функции. У функции будет инструкция, но она ничего не сделает.
Можно ли иметь в функции несколько операторов?
Да, у нас может быть несколько операторов прохода в функции или блоке кода. Это потому, что оператор pass не завершает функцию. Его единственная работа — предоставить пустой оператор.
def bar(): pass print('bar') pass if True: pass pass print('True') else: print('False') pass pass
Зачем нужен?
- Оператор передачи Python очень полезен при определении пустой функции или пустого блока кода.
- Наиболее важное использование оператора pass — создать контракт для классов и функций, которые мы хотим реализовать позже. Например, мы можем определить модуль Python следующим образом:
class EmployeeDAO: def get_emp_by_id(self, i): """ TODO: implement this function later on :param i: employee id :return: employee object """ pass def delete_emp(self, i): pass # This function will read Employees CSV Data file and return list of Employees def read_csv_file(file): pass
Мы можем приступить к реализации. Сторонний код знает функции и методы, которые мы будем реализовывать, поэтому они могут продолжить их реализацию.