欢迎来到Cecilia陈的博客

孤独,是人一生最好的修行。

056 import和from····import

import和from····import

一、import

1.import time

使用import 导入模块的时候,使用方法只能用(模块.方法名()),不能直接用模块里面的方法名

import time

time.time()# 只能这样用

time()# 不可以这样用

2.用import导入模块,会引发的3件事情

  • 比如我们就import time导入time这个模块的时候
  1. 会在内存中生成一个叫做time的名称空间
  2. 在运行time.py文件,把time.py文件内的名称空间放入time的名称空间内
  3. 把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这个模块的时候
  1. 在内存中生成一个叫做time的名称空间
  2. 运行time.py文件,然后把time.py文件内的所有的名字都放入time的名称空间
  3. 然后gmtime直接指向,当前导入time模块的中的某一个名字

3.from·····import导入模块的功能

  1. ``from time import gmtime`

    从time模块里导入 gmtime这一个方法

  2. from time import gmtime,time

    从time模块里面导入gmtime 和time这两个方法,当然我们也可以多写几个,导入多个

  3. from time import *
    8

    从time模块里面,导入time模块里面所有的方法。这个就等同于import time,但是不推荐使用,因为很容易造成变量名冲突

  4. _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...的异同

相同点:

  1. 两者都会执行模块对应的文件,两者都会产生模块的名称空间
  2. 两者调用功能时,需要跑到定义时寻找作用域关系,与调用位置无关

不同点

  1. import需要加前缀;from...import...不需要加前缀
posted @ 2019-08-16 16:21  Cecilia陈  阅读(208)  评论(0编辑  收藏  举报