056 import和from····import
import和from····import
一、import
1.import time
使用import 导入模块的时候,使用方法只能用(模块.方法名()),不能直接用模块里面的方法名
import time
time.time()# 只能这样用
time()# 不可以这样用
2.用import导入模块,会引发的3件事情
- 比如我们就import time导入time这个模块的时候
- 会在内存中生成一个叫做time的名称空间
- 在运行time.py文件,把time.py文件内的名称空间放入time的名称空间内
- 把time的名称空间指向 import和from····import.py(当前导入time模块的文件) 的名称空间中
二、from····import
1.from time import gmtime
使用from····import时直接从某一个模块中导入模块中的一个方法
- 优点:不用加前缀,代码更加精简
- 缺点:容易与当前执行文件中名称空间中的名字冲突
from time import gmtime
gmtime()# 不用像import导入模块那样、需要用模块名.方法名(time.gmtime)
2.用from····import导入模块方法,会引发的3件事情
- 比如我们就import time导入time这个模块的时候
- 在内存中生成一个叫做time的名称空间
- 运行time.py文件,然后把time.py文件内的所有的名字都放入time的名称空间
- 然后gmtime直接指向,当前导入time模块的中的某一个名字
3.from·····import导入模块的功能
-
``from time import gmtime`
从time模块里导入 gmtime这一个方法
-
from time import gmtime,time
从time模块里面导入gmtime 和time这两个方法,当然我们也可以多写几个,导入多个
-
from time import *
8从time模块里面,导入time模块里面所有的方法。这个就等同于import time,但是不推荐使用,因为很容易造成变量名冲突
-
_all_:只允许需要导入模块的某几个方法,也就是限制一些方法不可以被使用
# test.py文件 __all__ = ['name','age']# 只允许导入'money'和'read1' def name(): pass def age(): paass def money(): pass
# run.py文件 from test import *# 导入test模块中的所有功能 # 但是它受到了__all__的限制,如果导入__all__限制以外的功能的话,就会报错
三、import和from...import...的异同
相同点:
- 两者都会执行模块对应的文件,两者都会产生模块的名称空间
- 两者调用功能时,需要跑到定义时寻找作用域关系,与调用位置无关
不同点
- import需要加前缀;from...import...不需要加前缀