locals()
— это встроенная функция Python, которая возвращает словарь локальных переменных для текущей области видимости.
Это означает, что она возвращает все переменные, определенные в текущей области видимости, включая аргументы функций, переменные, определенные внутри функции, и так далее.
Синтаксис функции locals()
прост. Она не принимает никаких аргументов и возвращает словарь локальных символов:
locals()
Функция locals()
возвращает словарь, содержащий все локальные переменные, определенные в текущем пространстве имен. Если вы вызовете функцию locals()
внутри функции, она вернет все локальные переменные этой функции.
def test_locals():
var1 = "Python"
var2 = 123
print(locals())
test_locals()
#{'var1': 'Python', 'var2': 123}
В этом примере locals()
вызывается внутри функции test_locals()
. В выводе будет словарь, содержащий переменные var1
и var2
и их значения.
Важно отметить, что изменение словаря, возвращаемого функцией locals()
, не приводит к изменению актуальной локальной области видимости. Это отличает locals()
от своего «брата» globals()
, который возвращает словарь глобальных символов, и его изменение действительно отражается в глобальной области видимости.
def test_locals():
var1 = "Python"
locals()["var1"] = "Changed"
print(var1)
test_locals()
#Python
В этом примере, несмотря на то что мы пытались изменить var1
через словарь, возвращенный locals()
, значение var1
не изменилось.
locals()
также можно использовать внутри классов, где она возвращает словарь, содержащий все атрибуты класса и методы.
class MyClass:
def __init__(self):
self.attr = "Python"
print(locals())
my_obj = MyClass()
#{'self': <__main__.MyClass object at 0x0000015D67E454B0>}
Функция locals()
может быть полезной для отладки кода, особенно когда вы работаете с большими функциями и хотите увидеть, какие переменные были определены до определенного момента времени.
def complex_function():
var1 = "Python"
# Больше кода...
var2 = [1, 2, 3]
# Еще больше кода...
print(locals())
complex_function()
#{'var1': 'Python', 'var2': [1, 2, 3]}
В этом примере locals()
вызывается внутри функции complex_function()
, позволяя вам увидеть все переменные, которые были определены до этого момента.
locals()
может быть полезной при отладке рекурсивных функций, поскольку каждый вызов функции имеет свою собственную локальную область видимости.
def recursive_function(n):
if n == 0:
return
print(f"At recursion level {n}, locals are {locals()}")
recursive_function(n-1)
recursive_function(3)
#At recursion level 3, locals are {'n': 3}
#At recursion level 2, locals are {'n': 2}
#At recursion level 1, locals are {'n': 1}
В этом примере locals()
показывает локальные переменные на каждом уровне рекурсии.
Функция locals()
— это удобный инструмент для просмотра локальной области видимости в Python. Однако нужно быть осторожным при работе с возвращаемым ею словарем, поскольку изменения в этом словаре не отражаются на реальной локальной области видимости.
Содержание: