Python Hub - сборище Питонистов
1.71K subscribers
657 photos
1 video
37 files
276 links
Уголок счастья для любого питониста.

Сотрудничество или заказы: @leshunist

https://shcoder.dev - студия разработки ShcoderDevelopment

https://t.me/pythonhub_chat - чат
Download Telegram
Python Hub - сборище Питонистов
Photo
Разбор😎

Список lst по умолчанию создается один раз при определении функции, а не при каждом вызове.
Поэтому при первом вызове add_to_list(1) список становится [1], а при втором вызове add_to_list(2) к тому же списку добавляется 2, итог — [1, 2].

Это классическая ловушка с изменяемыми аргументами по умолчанию в Python.
👍61🤔1
Что выдаст код выше?
Anonymous Quiz
29%
1 2 3
17%
3 3 3
14%
0 1 2
22%
Ошибка
17%
Не знаю
🤔5👍31
Python Hub - сборище Питонистов
Photo
Разбор😎

Lambda-функции в списке захватывают переменную i из внешней области видимости , а не её значение на момент создания. После завершения цикла i становится равным 2 (последнее значение в range(3)).

Поэтому все функции используют i = 2, и результат для любого вызова funcs[n](1) будет 1 + 2 = 3.

Это типичная "ловушка" при работе с замыканиями в циклах.
👍41
Python Hub - сборище Питонистов
Photo
Разбор 😎

В Python списки — это изменяемые объекты. Когда мы присваиваем y = x, переменная y начинает ссылаться на тот же объект в памяти, что и x.

Поэтому любые изменения, сделанные через y, отразятся и на x. В данном случае вызов y.append(4) добавляет элемент 4 в конец списка, на который ссылаются обе переменные.

Таким образом, вывод будет [1, 2, 3, 4].
👍31
Что выдаст код выше?
Anonymous Quiz
47%
15 15
27%
10 15
10%
AttributeError
10%
10 10
6%
Не знаю
2👍2
Python Hub - сборище Питонистов
Photo
Разбор 😎


Здесь мы имеем дело с объектами и ссылками в Python. Когда создается объект класса A (a = A()), переменная a ссылается на этот объект. Затем переменной b присваивается ссылка на тот же объект (b = a). Это означает, что a и b ссылаются на один и тот же объект в памяти.

Когда вызывается метод update через переменную b, он изменяет атрибут x этого объекта, увеличивая его значение на 5. Поскольку a и b ссылаются на один и тот же объект, изменение видно через обе переменные. Таким образом, после выполнения b.update(5) значение x становится равным 15, и вывод будет 15 15.
👍51
Что выдаст код выше?
Anonymous Quiz
33%
3 2
14%
3 3
11%
3 1
22%
Error
21%
Не знаю
👍31
Python Hub - сборище Питонистов
Photo
Мораль😎

Атрибуты класса (count) являются общими для всех экземпляров класса.
Метод __del__ вызывается автоматически, когда объект уничтожается (например, после выполнения del или когда программа завершается).
Если объект больше не имеет ссылок, он удаляется сборщиком мусора, и вызывается деструктор.
👍2