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

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

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

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

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

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

Таким образом, вывод будет [1, 2, 3, 4].
👍31
Что выдаст код выше?
Anonymous Quiz
46%
15 15
27%
10 15
10%
AttributeError
11%
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
34%
3 2
13%
3 3
11%
3 1
22%
Error
20%
Не знаю
👍31
Python Hub - сборище Питонистов
Photo
Мораль😎

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

Привет, питонисты! 👋 Сегодня разберём тему, которая частенько вызывает головную боль даже у опытных разработчиков — области видимости переменных и ключевые слова global и nonlocal.

🤔 В чём суть?
Представьте, что вы пишете функцию внутри функции (да, такое бывает!), и вам нужно изменить переменную "снаружи". Без special words Python скажет: "Неа, не получится!" 😅

🎯 Как это работает?

Global:

x = 5  # глобальная переменная

def change_x():
global x # говорим Python, что хотим менять глобальную x
x = 10 # теперь работает!

change_x()
print(x) # выведет 10


🎈 Nonlocal:

def outer():
counter = 0 # переменная внешней функции

def inner():
nonlocal counter # хотим менять counter из outer
counter += 1 # работает!

inner()
print(counter) # выведет 1

outer()


⚡️ Важные моменты:

➡️ Global можно использовать для создания новых переменных
➡️ Nonlocal работает только с существующими переменными
➡️ В Python 3.13 пофиксили баги с global в блоках else и except

🚫 Типичные ошибки:

Неправильно:

def bad_function():
print(x) # ошибка!
global x # global нужно объявлять до использования
x = 10


Правильно:

def good_function():
global x
print(x) # теперь всё ок
x = 10


🛠 Полезные инструменты:

Чтобы проверить, какие переменные у вас есть:

print(globals())  # все глобальные переменные
print(locals()) # все локальные переменные


💡 Практические советы:

- Используйте global только когда действительно необходимо
- Nonlocal отлично подходит для счетчиков и аккумуляторов
- Всегда документируйте использование global и nonlocal в комментариях
- Старайтесь минимизировать использование глобальных переменных
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91
💩 Тут вы лайки ставить можете, а под видео нет

🤦‍♂️🤦‍♂️🤦‍♂️
1110000 1101111 1110011 1110100 1100001 1110110 100111 100000 1101100 1101001 1101011 1100101
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1321🤔1