Курс Python → Переменная Шредингера
Переменная Шредингера (ч.2) — это явление, когда при определении функции внутри цикла, использующей переменную цикла в своем теле, закрытие функции цикла привязывается к переменной, а не к ее значению. Это означает, что функция будет искать переменную в окружающем контексте, вместо того, чтобы использовать значение переменной в момент создания функции.
Это приводит к тому, что все функции будут использовать последнее значение, присвоенное переменной в цикле. Например, если у нас есть цикл, в котором переменная x меняется на каждой итерации, и внутри этого цикла мы определяем функцию, использующую x, то эта функция будет использовать последнее значение x из окружающего контекста.
Пример кода, демонстрирующий переменную Шредингера:
for x in range(3):
def func():
print(x)
func()
В этом примере функция func будет использовать последнее значение переменной x после завершения цикла. Таким образом, при вызове func на каждой итерации цикла, будет выведено значение x из окружающего контекста, а не значение x на момент создания функции.
Избежать переменной Шредингера можно, например, передавая значение переменной в качестве аргумента функции или используя замыкания. Это позволит функции использовать конкретное значение переменной, а не искать его в окружающем контексте.
Другие уроки курса "Python"
- Протокол управления контекстом
- Решение переменной Шредингера
- Работа с кортежами в Python
- Работа с коллекциями Python
- Оператор «or» в Python
- Управление ресурсами с контекстными менеджерами
- Удаление символа из строки
- Открытие и запись файлов
- Установка и обучение ChatterBot
- Добавление элементов в список: append() vs extend()
- Работа с Colorama
- Python reversed() функция
- Роль object и type в Python
- Подсчет количества элементов в списке
- Генераторы и сеты в Python
- Сравнение объектов в Python
- Получение значений из словарей
- Принцип одной функции
- Вложенные генераторы в Python
- Поиск подстроки в строке
- Тестирование с unittest
- Подробная информация о %pinfo
- Многострочные комментарии в Python
- Удаление специальных символов с помощью re.sub
- Избегайте изменяемых аргументов
- Генераторы списков
- Парсинг веб-страниц с Beautiful Soup
- Генераторы в Python
- Анализ текста на русском языке с помощью Pymystem3
- Упрощение условных выражений с тернарным оператором
- Создание словарей с defaultdict()
- Применение команды break
- Установка Git и AWS CLI
- Функция reversed() в Python
- Участие в LP стейкинге Waves
- Значения по умолчанию в Python
- Преобразование Excel в PDF с Spire.XLS
- Метод ne для сравнения объектов
- Проверка типов с помощью isinstance
- Математические функции в Python
- Установка и использование pyshorteners
- Исключение NotImplementedError
- Создание именованных кортежей в Python
- Python и Монти Пайтон
- Оператор += в Python
- Отображение графиков в Jupyter с Matplotlib
- Работа с NumPy.linalg
- Сериализация данных в JSON с помощью json.dumps















