Python中import和from的一些事。。。
2018-03-19 20:02
302 查看
客户端可以执行import或from语句。如果模块还没有加载,这两个语句会去搜索、编译以及执行模块文件程序。主要差别在于,import会读取整个模块,所以必须进行定义后才能读取它的变量名;from将获取(或者是复制)模块特定的变量名。 import使一个变量名引用整个模块对象,因此必须通过模块名称来得到该模块的属性(例如,module1.printer)。而from会把变量名复制到另一个作用域,所以它就可以直接在脚本中使用复制后的变量名,而不用通过模块(例如,printer)。 from语句有破坏命名空间的潜质。如果使用from导入变量,而那些变量碰巧和作用域中现有变量重名,变量就会被悄悄的覆盖掉。使用import语句时就不存在这种问题,因为必须通过模块名才能获取其内容。不过,使用from时,只要你了解并预料到可能发生这种事,在实际情况下这就不是一个大问题了,尤其是当你明确列出导入变量名时(例如,from module import x, y, z)。 另一方面,和reload调用同时使用时,from语句有比较严重的问题,因为导入的变量名可能引用之前版本的对象。再者,from module import *形式的确可能破坏命名空间,让变量名难以理解,尤其是在导入一个以上的文件时。 比较务实的建议是:简单的模块一般倾向于使用import,而不是from。多数的from语句是用于明确列举想要的变量,而且限制在每个文件中只用一次from *形式。这样一来,任何无定义的变量名都可以认为是存在于from *所引用的模块内。当你必须使用两个不同模块内定义的相同变量名变量时,才真的必须使用import,这种情况下不能使用from。
相关文章推荐
- [Python]Numpy安装及一些玄学问题(is not a supported wheel on this platform、Undefined variable from import)
- python之from 和import执行过程分析
- python import 与 from .... import ...区别
- python基础之---import与from...import....
- python~ from string import Template
- Python 包、模块 概念 from 、import 关键字
- Python HackerRank|Collections.deque()(from collections import deque)
- Python7:from module import * 和 import module 的区别
- python的import与from...import的不同之处
- python from collections import namedtuple
- python 清晰讲解 from import 和 import
- Python_import Vs from module import
- python中使用from..import时,提示SyntaxError:invalid syntax
- python中import和from...import的区别
- Python中import, from...import,import...as的区别
- 简单说说python import与from...import....(python模块)
- python中from module import * 的一个坑
- Python的from import和import的区别
- 关于python 中的__future__模块(from __future__ import ***)
- 详解Python中的from..import绝对导入语句