Курс Python → Переменная Шредингера
Переменная Шредингера (ч.2) — это явление, когда при определении функции внутри цикла, использующей переменную цикла в своем теле, закрытие функции цикла привязывается к переменной, а не к ее значению. Это означает, что функция будет искать переменную в окружающем контексте, вместо того, чтобы использовать значение переменной в момент создания функции.
Это приводит к тому, что все функции будут использовать последнее значение, присвоенное переменной в цикле. Например, если у нас есть цикл, в котором переменная x меняется на каждой итерации, и внутри этого цикла мы определяем функцию, использующую x, то эта функция будет использовать последнее значение x из окружающего контекста.
Пример кода, демонстрирующий переменную Шредингера:
for x in range(3):
def func():
print(x)
func()
В этом примере функция func будет использовать последнее значение переменной x после завершения цикла. Таким образом, при вызове func на каждой итерации цикла, будет выведено значение x из окружающего контекста, а не значение x на момент создания функции.
Избежать переменной Шредингера можно, например, передавая значение переменной в качестве аргумента функции или используя замыкания. Это позволит функции использовать конкретное значение переменной, а не искать его в окружающем контексте.
Другие уроки курса "Python"
- Реализация метода __abs__ в Python
- Очистка данных с помощью pandas
- Измерение времени выполнения кода
- Переопределение метода len
- Работа с CSV файлами
- Удаление дубликатов с помощью множеств
- Инверсия списков и строк в Python
- Применение функции к списку
- Работа с zip-архивами в Python
- Срезы в Python
- Метод join() для объединения элементов строки
- F-строки в Python
- Чтение и запись TOML-конфигов
- Сортировка в Python
- Сглаживание списка
- Установка Python3.7 и PIP
- Регистрация на хакатоне
- Форматирование вывода с F-строками
- Python reversed() функция
- Форматирование строк в Python
- Форматирование данных с помощью pprint
- Метод join для объединения строк
- Удаление элемента из списка
- Метод invert для побитового отрицания
- Работа с коллекциями Python
- Работа со строками в Python
- Получение текущей даты и времени с помощью datetime
- SciPy: широкий функционал для математических операций
- Методы HTTP запросов в Flask
- Список переменных в Python
- Сортировка с помощью key
- Функция с *args.
- Нахождение хеша для бесконечности и NaN в Python
- Списки в Python: синтаксис представления
- Поиск уникальных и повторяющихся элементов
- Работа с процессами в Python
- Подсчет вхождений элементов
- Сортировка данных с лямбда-функциями
- Использование метода lower()
- Хеши в Python
- Метод remove() для удаления элемента из списка
- Поиск частого элемента
- TypedDict для kwargs в Python 3.12
- Печать календаря
- Работа с CSV файлами в Python
- Хеширование паролей с солью
- Python Ellipsis использование















