Phi*_*ipp -1 python-module built-in python-3.x
在__builtin__Python中的杂波模块开发,有很多的函数和类具有非常通用名称命名空间(例如max,sum,id,hash,往往得到变量命名的方式,当一个上下文感知IDE之外的人可以意外覆盖一个等)名字没有注意到.
有没有办法阻止从某个文件隐式访问此模块并需要显式导入?
有点像:
from __builtins__ import hash as builtin_hash
hash = builtin_hash(foo)
Run Code Online (Sandbox Code Playgroud)
我知道这是不好的做法.
您可以简单地删除__builtins__Python用于查找内置命名空间的名称:
>>> del __builtins__
>>> max
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'max' is not defined
Run Code Online (Sandbox Code Playgroud)
警告:如果你在其他人的命名空间中执行此操作,他们会讨厌你.
......而且需要明确的导入?
请注意,使用builtins解析import语句;)
>>> del __builtins__
>>> from builtins import max
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: __import__ not found
Run Code Online (Sandbox Code Playgroud)
...非常通用的名称(例如max,sum,id,hash等)经常妨碍命名变量,当在上下文感知IDE之外时,可能会意外地覆盖名称而不会注意到
您将只创建一个隐藏名称的局部变量.如果你是在有限的范围内进行的话,这实际上是无关紧要的,尽管它仍然是糟糕的形式(可读性计数).
# this shadows built-in hash function in this namespace ... meh?
hash = '38762cf7f55934b34d179ae6a4c80cadccbb7f0a'
# this stomps built-in hash ... not a honking great idea!
import builtins
builtins.hash = lambda obj: -1
Run Code Online (Sandbox Code Playgroud)
最佳实践:
checksum)或在名称上附加尾随下划线来避免名称阴影(例如hash_)| 归档时间: |
|
| 查看次数: |
170 次 |
| 最近记录: |