执行"from xyz import Abc"时,解释器会做什么?

eri*_*ork 3 python python-2.x python-2.7

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

  1. from xyz import Abc
  2. from xyz import *

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

Bjö*_*lex 5

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

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

来自Martijn Pieters:

除非__all__已设置参数,否则还可以从该模块再次导入导入模块的所有顶级名称.因此,您通常最终会将更多项添加到本地命名空间,而不是您所讨论的

  • @ erikb85:您导入模块的所有顶级名称,也可以从*该模块再次导入*,除非设置了`__all__`参数.因此,您通常最终会将更多项添加到本地命名空间,而不是您所讨论的. (2认同)