• Python 模块化 import 语句介绍(一)


    用法:

    import 模块1[,模块2,模块3...]

    os 顶级模块
    os.path 非顶级模块
    as 相当于重命名

    import 的本质:

    解释器负责模块单独加载,单独初始化,生成一个模块对象,当前作用域生成一个同名标识符,映射到模块对象上,然后就可以通过这个标识符来访问模块对象的资源。并不是直接引用模块,或把模块的源码加载到当前空间。

    在HTML语言中include的意思是直接将其它文件的源码包含进来,生成一个新的源码文件。

    例1:

    import functools
    print(dir())
    print(functools)
    print(functools.wraps)
    
    运行结果:
    ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'functools']
    <module 'functools' from 'C:\Python\lib\functools.py'> //这个模块对象是一个module模块类型
    <function wraps at 0x0000020A133F1D90>
    [Finished in 0.4s]

      

    导入之后能用 "." 来调用模块的类、方法、属性,是因为模块被初始化成了一个对象。

    例2:

    import os.path
    print(dir())
    #path. #错误用法,这种导入方式不能使用使用非顶级模块名称直接调用,但当使用as语句时可以使用
    os.path.exists()
    
    运行结果:
    [..., 'os']
    

      

    例3:

    import os.path as p
    print(dir())
    print(p.__name__) 
    
    运行结果:
    [..., 'p']
    ntpath
    [Finished in 0.3s]
    

      

    总结:

      1. 当直接导入顶级模块时(如 import os),解释器负责单独加载模块,初始化模块,生成一个模块对象,并绑定在当前命名空间的一个同名的标识符。

                使用时,需要使用 “模块名.方法()” 的格式。

      2. 当导入的是非顶级模块时(如 import os.path),只会在当前命名空间生成顶级模块的对象标识符,并不会生成path标识符。

               使用时,也只能通过 “os.path.exists()” 的完整层级关系使用。

      3. 当导入的非顶级模块使用了as 语句(如 import os.path as p)时,当前命名空间绑定的是 "p" 这个对象标识符。

               使用时,就可以通过 “p.exists()” 的方式来使用模块资源。

  • 相关阅读:
    策略模式精讲
    工厂模式精讲
    单例模式精讲
    原型模式精讲
    CoreJava学习第五课 --- 进入第二阶段:面向对象编程思想
    CoreJava学习第四课-数组
    CoreJava学习第三课
    CoreJava学习第一课
    Oracle练习题一
    JDBC第一课-简介及开发第一个JDBC程序
  • 原文地址:https://www.cnblogs.com/i-honey/p/8016570.html
Copyright © 2020-2023  润新知