Курс Python → Переменная Шредингера
Переменная Шредингера (ч.2) — это явление, когда при определении функции внутри цикла, использующей переменную цикла в своем теле, закрытие функции цикла привязывается к переменной, а не к ее значению. Это означает, что функция будет искать переменную в окружающем контексте, вместо того, чтобы использовать значение переменной в момент создания функции.
Это приводит к тому, что все функции будут использовать последнее значение, присвоенное переменной в цикле. Например, если у нас есть цикл, в котором переменная x меняется на каждой итерации, и внутри этого цикла мы определяем функцию, использующую x, то эта функция будет использовать последнее значение x из окружающего контекста.
Пример кода, демонстрирующий переменную Шредингера:
for x in range(3):
def func():
print(x)
func()
В этом примере функция func будет использовать последнее значение переменной x после завершения цикла. Таким образом, при вызове func на каждой итерации цикла, будет выведено значение x из окружающего контекста, а не значение x на момент создания функции.
Избежать переменной Шредингера можно, например, передавая значение переменной в качестве аргумента функции или используя замыкания. Это позволит функции использовать конкретное значение переменной, а не искать его в окружающем контексте.
Другие уроки курса "Python"
- Пересечение списков с использованием множеств
- Открытие и редактирование скриптов Python
- Измерение времени выполнения кода
- Блок else в обработке исключений
- Создание и обучение модели с Keras
- Улучшенные подсказки для импорта в Python 3.12
- Игра «Угадывание чисел»
- Оператор is в Python
- Статическая типизация в Python
- Подсчет частотности элементов в Python
- Работа с модулем Calendar
- Наследование в программировании
- Основы работы с базами данных в Python
- Навыки Python: строки, типы данных
- Библиотека Emoji: использование смайлов в Python
- Оператор «not» в Python
- Метод title() в Python
- Использование defaultdict в Python
- Проверка файла .py на синтаксис.
- Метод setdefault() в Python
- Открытие, чтение и закрытие файла
- Форматирование данных с помощью pprint
- Переменная с нижним подчеркиванием
- Установка и использование emoji
- Создание тестовых данных с Faker
- Управление памятью в Python
- Расширение информации об ошибке в Python
- Именованные аргументы в Python
- Печать списка с помощью метода join
- Преобразование регистра символов
- Отправка HTTP-запросов с User-Agent
- Определение индекса элемента списка
- Транспонирование 2D-массива с помощью zip
- Отслеживание выполнения программы с библиотекой tqdm
- Оптимизация методов в Python 3.7
- Сортировка с помощью key
- Создание обратного итератора
- Логирование с Logzero
- Просмотр файла в Jupyter Noteboo
- Объединение словарей в Python 3.5+
- Использование обратной косой черты в f-строках
- Философия Python
- Проверка элемента в множестве.















