Курс Python → Переменная Шредингера
Переменная Шредингера (ч.2) — это явление, когда при определении функции внутри цикла, использующей переменную цикла в своем теле, закрытие функции цикла привязывается к переменной, а не к ее значению. Это означает, что функция будет искать переменную в окружающем контексте, вместо того, чтобы использовать значение переменной в момент создания функции.
Это приводит к тому, что все функции будут использовать последнее значение, присвоенное переменной в цикле. Например, если у нас есть цикл, в котором переменная x меняется на каждой итерации, и внутри этого цикла мы определяем функцию, использующую x, то эта функция будет использовать последнее значение x из окружающего контекста.
Пример кода, демонстрирующий переменную Шредингера:
for x in range(3):
def func():
print(x)
func()
В этом примере функция func будет использовать последнее значение переменной x после завершения цикла. Таким образом, при вызове func на каждой итерации цикла, будет выведено значение x из окружающего контекста, а не значение x на момент создания функции.
Избежать переменной Шредингера можно, например, передавая значение переменной в качестве аргумента функции или используя замыкания. Это позволит функции использовать конкретное значение переменной, а не искать его в окружающем контексте.
Другие уроки курса "Python"
- Сокращение ссылок с pyshorteners
- Lambda Functions in Python
- Поиск элементов BeautifulSoup
- Удаление элементов из списка в Python
- Вычисление фазы комплексного числа
- EMOT преобразование эмодзи в текст
- Создание списков в Python
- Резервирование символов в Python
- Разделение строки с помощью re.split()
- Округление чисел с помощью round
- Функции-генераторы в Python
- Гибкие функции Python
- Метод setdefault() в Python
- Функциональное программирование.
- Перевернуть список в Python
- Оператор умножения для вектора
- Переворот строки с использованием цикла
- Блок try…finally в Python
- Списки: объединение, изменение
- Разделение строки в Python
- Группы исключений в Python
- Метод count() для списка
- Работа с датой и временем в Python
- Извлечение аудио из видео
- Python enumerate() для работы с индексами
- Использование модуля math
- Хэш-функции и метод цепочек
- Сортировка HTML-элементов
- Добавление элемента в список.
- Методы list в Python
- Инверсия списков и строк в Python
- Копирование списков в Python
- Генераторы в Python
- Работа с CSV в Python
- Получение списка кортежей из словаря
- Освобождение памяти в Python
- Обновление данных через PUT запрос
- Изменение элемента списка
- Использование двоеточия в Python
- Конвертация изображений в PDF
- Переопределение метода delitem в Python
- Работа с PosixPath() в Python
- Работа с NumPy массивами
- Объединение строк с помощью метода join
- Пространство имен в Python















