TG Telegram Group & Channel
Библиотека Python разработчика | Книги по питону | United States America (US)
Create: Update:

В Python вы можете легко изменять все стандартные переменные, доступные в глобальном пространстве имён:


>>> print = 42
>>> print(42)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable


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

Тем не менее, даже если вы затеняете (shadow) некоторые встроенные имена, вам всё ещё может понадобиться доступ к оригинальным объектам, на которые они изначально ссылались. Для этого существует модуль builtins:


>>> import builtins
>>> print = 42
>>> builtins.print(1)
1


Также переменная __builtins__ доступна в большинстве модулей. Однако здесь есть нюанс. Во-первых, это деталь реализации CPython, и обычно её вообще не стоит использовать. Во-вторых, __builtins__ может ссылаться либо на builtins, либо на builtins.__dict__, в зависимости от того, как именно был загружен текущий модуль.

👉@BookPython

В Python вы можете легко изменять все стандартные переменные, доступные в глобальном пространстве имён:


>>> print = 42
>>> print(42)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable


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

Тем не менее, даже если вы затеняете (shadow) некоторые встроенные имена, вам всё ещё может понадобиться доступ к оригинальным объектам, на которые они изначально ссылались. Для этого существует модуль builtins:


>>> import builtins
>>> print = 42
>>> builtins.print(1)
1


Также переменная __builtins__ доступна в большинстве модулей. Однако здесь есть нюанс. Во-первых, это деталь реализации CPython, и обычно её вообще не стоит использовать. Во-вторых, __builtins__ может ссылаться либо на builtins, либо на builtins.__dict__, в зависимости от того, как именно был загружен текущий модуль.

👉@BookPython
👍4


>>Click here to continue<<

Библиотека Python разработчика | Книги по питону




Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)