Python重新引入被覆盖的自带function
投稿:hebedich
最近在写python应用时遇到一个问题: 引入某个模块时会自动引入自定义的int到python的namespace中, 从而覆盖了python自带的int function. 因为我们需要使用python的int, 所以不得不找到重新引入这int的方法.
幸运的是, 这一问题还是很容易解决的, 我们只需要使用__builtins__:
from __builtins__ import int as py_int
这样一来我们又可以重新使用python的int了, 但在此时叫做py_int.
一个function或变量的被覆盖最常见的原因是在引用时使用了"*":
from something import *
当这样使用import时, 我们无法明确的指导究竟引入了哪些变量或function, 也无法知道这些变量或function是否会覆盖原来的变量或function. 所以这也是在使用import时不推荐使用"*"的主要原因之一.
在python 3中, 可以使用builtins代替__builtins__.