Python является динамическим, а не статичным по своей природе.Вместо таблицы символов, как в скомпилированном объектном коде, виртуальная машина имеет адресное пространство имен для ваших переменных.
Функция dir()
или dir(module)
возвращает эффективное пространство имен в этой точке кода.Он в основном используется в интерактивном интерпретаторе, но также может использоваться и кодом.Он возвращает список строк, каждая из которых является переменной с некоторым значением.
Функция globals()
возвращает словарь имен переменных для значений переменных, где имена переменных в настоящий момент считаются глобальными в области видимости..
Функция locals()
возвращает словарь имен переменных в значения переменных, где имена переменных считаются локальными в области действия в тот момент.
$ python
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> locals()
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, '__package__': None}
>>> globals()
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, '__package__': None}
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']
>>> import base64
>>> dir(base64)
['EMPTYSTRING', 'MAXBINSIZE', 'MAXLINESIZE', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '_b32alphabet', '_b32rev', '_b32tab', '_translate', '_translation', '_x', 'b16decode', 'b16encode', 'b32decode', 'b32encode', 'b64decode', 'b64encode', 'binascii', 'decode', 'decodestring', 'encode', 'encodestring', 'k', 're', 'standard_b64decode', 'standard_b64encode', 'struct', 'test', 'test1', 'urlsafe_b64decode', 'urlsafe_b64encode', 'v']