tg-me.com/pyproglib/6894
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 сек
Инкапсуляция:
Пример сравнения класса с инкапсуляцией и без:
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
Для повышения производительности и удобства поддержки используйте локальные переменные и инкапсуляцию. Это простой, но мощный способ оптимизации вашего кода.
Библиотека питониста #буст