python-2.7 – 执行“from xyz import Abc”时,解释器做了什么?

在这些案件中,口译员做了什么?

>来自xyz import Abc
>来自xyz import *

是否必须解析完整的文件xyz.py?一种方式应该比另一种更快吗?或者仅仅是可读性问题,人们更喜欢第一种方法到第二种?

最佳答案 它在性能方面不应有任何区别,因为整个模块必须以任何方式处理.

区别在于可读性和名称空间的污染.为了最大限度地减少名称冲突的可能性以及由于名称隐藏而导致的意外行为,谨慎的做法是仅导入您实际使用的那些对象.

Martijn Pieters

All top-level names you import into a module, can also be imported again from that module
unless a __all__ parameter has been set. Thus you usually end up with far more items being
added to your local namespace than you bargained for

点赞