PYPROGLIB Telegram 6894
🗳 Глобальные переменные, инкапсуляция и области видимости в Python

В Python область видимости (scope) определяет, где переменная видна и как долго живёт.

Основные области видимости:
📝 Локальная — внутри функции
📝 Глобальная — на уровне модуля
📝 Классовая/экземплярная — внутри класса (атрибуты класса и объекта)

🔎 Почему локальные переменные работают быстрее глобальных

Python ищет переменную по правилу LEGB: Local → Enclosing → Global → Built-in

Поиск начинается с самой узкой области — локальной, где переменных меньше, и поиск происходит быстрее.

Пример на замере времени:
import time

def local_test():
a = 0
for _ in range(1000000):
a += 1

b = 0
def global_test():
global b
for _ in range(1000000):
b += 1

start = time.time()
local_test()
print(f"Локальные переменные: {time.time() - start:.4f} сек")

start = time.time()
global_test()
print(f"Глобальные переменные: {time.time() - start:.4f} сек")


Локальные переменные: 0.5668 сек
Глобальные переменные: 1.1951 сек


Результат: локальные переменные работают заметно быстрее.

🔎 Важно вспомнить об инкапсуляции — ключевом инструменте организации и оптимизации кода

Инкапсуляция
:
📝 Локализует переменные внутри классов и функций
📝 Уменьшает количество отслеживаемых интерпретатором переменных
📝 Предотвращает конфликты имён и защищает данные
📝 Позволяет контролировать доступ к атрибутам через методы (getter/setter)

Пример сравнения класса с инкапсуляцией и без:
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height

class EncapsulatedRectangle:
def __init__(self, width, height):
self._width = width
self._height = height
def get_width(self):
return self._width
def set_width(self, width):
self._width = width
def area(self):
return self._width * self._height


В реальных приложениях инкапсуляция помогает писать более надежный и поддерживаемый код.


🔎 Ключевые преимущества инкапсуляции и локальных переменных:

📝Снижение нагрузки на интерпретатор — быстрее выполняется код
📝 Улучшение управления памятью — локальные переменные освобождаются после выхода из функции
📝 Защита данных и уменьшение числа ошибок

🔎 Вывод

Для повышения производительности и удобства поддержки используйте локальные переменные и инкапсуляцию. Это простой, но мощный способ оптимизации вашего кода.

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍117🔥1😁1



tgoop.com/pyproglib/6894
Create:
Last Update:

🗳 Глобальные переменные, инкапсуляция и области видимости в Python

В Python область видимости (scope) определяет, где переменная видна и как долго живёт.

Основные области видимости:
📝 Локальная — внутри функции
📝 Глобальная — на уровне модуля
📝 Классовая/экземплярная — внутри класса (атрибуты класса и объекта)

🔎 Почему локальные переменные работают быстрее глобальных

Python ищет переменную по правилу LEGB: Local → Enclosing → Global → Built-in

Поиск начинается с самой узкой области — локальной, где переменных меньше, и поиск происходит быстрее.

Пример на замере времени:

import time

def local_test():
a = 0
for _ in range(1000000):
a += 1

b = 0
def global_test():
global b
for _ in range(1000000):
b += 1

start = time.time()
local_test()
print(f"Локальные переменные: {time.time() - start:.4f} сек")

start = time.time()
global_test()
print(f"Глобальные переменные: {time.time() - start:.4f} сек")


Локальные переменные: 0.5668 сек
Глобальные переменные: 1.1951 сек


Результат: локальные переменные работают заметно быстрее.

🔎 Важно вспомнить об инкапсуляции — ключевом инструменте организации и оптимизации кода

Инкапсуляция
:
📝 Локализует переменные внутри классов и функций
📝 Уменьшает количество отслеживаемых интерпретатором переменных
📝 Предотвращает конфликты имён и защищает данные
📝 Позволяет контролировать доступ к атрибутам через методы (getter/setter)

Пример сравнения класса с инкапсуляцией и без:
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height

class EncapsulatedRectangle:
def __init__(self, width, height):
self._width = width
self._height = height
def get_width(self):
return self._width
def set_width(self, width):
self._width = width
def area(self):
return self._width * self._height


В реальных приложениях инкапсуляция помогает писать более надежный и поддерживаемый код.


🔎 Ключевые преимущества инкапсуляции и локальных переменных:

📝Снижение нагрузки на интерпретатор — быстрее выполняется код
📝 Улучшение управления памятью — локальные переменные освобождаются после выхода из функции
📝 Защита данных и уменьшение числа ошибок

🔎 Вывод

Для повышения производительности и удобства поддержки используйте локальные переменные и инкапсуляцию. Это простой, но мощный способ оптимизации вашего кода.

Библиотека питониста #буст

BY Библиотека питониста | Python, Django, Flask




Share with your friend now:
tgoop.com/pyproglib/6894

View MORE
Open in Telegram


Telegram News

Date: |

The public channel had more than 109,000 subscribers, Judge Hui said. Ng had the power to remove or amend the messages in the channel, but he “allowed them to exist.” Co-founder of NFT renting protocol Rentable World emiliano.eth shared the group Tuesday morning on Twitter, calling out the "degenerate" community, or crypto obsessives that engage in high-risk trading. According to media reports, the privacy watchdog was considering “blacklisting” some online platforms that have repeatedly posted doxxing information, with sources saying most messages were shared on Telegram. Private channels are only accessible to subscribers and don’t appear in public searches. To join a private channel, you need to receive a link from the owner (administrator). A private channel is an excellent solution for companies and teams. You can also use this type of channel to write down personal notes, reflections, etc. By the way, you can make your private channel public at any moment. Public channels are public to the internet, regardless of whether or not they are subscribed. A public channel is displayed in search results and has a short address (link).
from us


Telegram Библиотека питониста | Python, Django, Flask
FROM American