python3.5 import机制详解 上

     python的导入机制包含三种主要方式:import语句,importlib.import_module() 和內建的__import__()函数。

一. import语句

      import语句结合两个操作;它搜索指定的模块,然后将该搜索的结果绑定到本地作用域中的名称。 import语句的搜索操作被定义为使用适当的参数调用__import __()函数。 __import __()的返回值用于执行import语句的名称绑定操作。import语句与直接调用__import __()区别在于import语句会执行名称绑定操作,而__import __()不会。

     import语句分两种:

    1.基本导入语句(无from)

  • 找到一个模块,如果需要,加载和初始化它
  • 在import语句发生的作用域的本地命名空间中定义一个或多个名称。当语句包含多个子句(由逗号分隔)时,为每个子句分别执行两个步骤,就像子句已被分离为单个import语句一样
     当语句包含多个子句(由逗号分隔)时,为每个子句分别执行两个步骤,就像子句已被分离为单个import语句一样。查找过加载模块的过程详见下一篇。如果请求的模块被成功检索,它将通过以下三种方式之一在本地命名空间中可用:
如果模块名称后跟as,则as后的名称直接绑定到导入的模块。
如果没有指定其他名称,并且正在导入的模块是顶级模块,则模块的名称在本地命名空间中绑定为对导入模块的引用。如果正在导入的模块不是顶级模块,则包含该模块的顶级包的名称在本地命名空间中被绑定为对顶级包的引用。导入的模块必须使用其完全限定名称而不是直接访问。

    2.from形式
      找到在from子句中指定的模块,如果需要,加载和初始化它;
      对于在import子句中指定的每个标识符:
  • 检查导入的模块是否具有该名称的属性
  • 如果没有,请尝试导入具有该名称的子模块,然后再次检查导入的模块的该属性
  • 如果找不到该属性,则会引发ImportError
  • 否则,对该值的引用存储在本地命名空间中,如果存在,则使用as子句中的名称,否则使用属性名称
例子:
  
import foo                 # foo imported and bound locally
import foo.bar.baz         # foo.bar.baz imported, foo bound locally
import foo.bar.baz as fbb  # foo.bar.baz imported and bound as fbb
from foo.bar import baz    # foo.bar.baz imported and bound as baz
from foo import attr       # foo imported and foo.attr bound as attr

       

     

     


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值