zoukankan      html  css  js  c++  java
  • 模块

    1.模块:

      import一个模块相当于执行了这个模块

    2.在import模块的时候发生的事情

      1.寻找模块

      2.如果找个了这个模块,就开辟一个内存空间,并执行这个模块

      3.把这个模块中的所有用到的名字都收录到这个开辟的内存空间中

      4.创建一个变量来引用这个模块的空间

    3;模块特点:

      1.同一个模块在同一个py文件中不会被重复导入

      2.模块开辟的内存空间与文件的内存空间始终是隔离的

      3.自定义的模块的名字命名格则需要符合变量的命名格则

    import Student_message
    Student_message.study()
    

    4,导入多个模块,可以一行导入多个,但是不推荐这样做,因为不符合pep8规范

      并且导入的模块应该按照内置,第三方,自定义的顺序导入,并且两两之间空一行 

      目的是为他人使用自己的代码时,能够轻易区分这些模块.

    5.给模块起别名.  

      

      import study as a 
    
        a.name
        study.name #原模块名引用无效
    
    def file_1(read):
        if read == 'json':
            import json
            with open('path','w') as f:
                json.dump([1,2,3,4,5],f)
        elif read == 'pickle':
            import pickle
            with open('path','w') as f:
                pickle.dump([1,2,3,4,5],f)
                
    # 使用模块别名简化代码
    def file_1(read):
        if read == 'json':
            import json as a
        elif read == 'pickle':
            import pickle as a
        with open('path','w') as f:
            a.dump([1,2,3,4,5],f)
    

    6.模块搜索路径:

      一个模块能否可以导入,就看这个模块所在的目录在不在sys.path中

      正常的sys.path中除了内置,扩展模块所在的路径之外,

      只有一个路径是永远不会出问题:直接执行这个文件所在的目录

    import sys
    print(sys.path)
    

    路径报错 # ModuleNotFoundError,把文件所在目录的路径加到sys.path中

      

    import sys
    sys.path.append(r'E:1_pycharmvenv')
    import study
    

    7.两种运行一个py文件的方式:

      直接运行:cmd python xx.py   pycharm 脚本

      __name__ == '__main__' 

      导入它:模块

      __name__ == '模块名'

    8.from import的过程

      找到模块名

      开辟内存空间,执行模块

      所有模块中的名字都存到这个内存空间中

      建立一个引用name,read2分别引用模块空间中的名字

    from study import name
    print(name)
    from study import name,read2
    name = 'alex'
    read()
    

      

    from study import name,rand1,read2
    from study import name as a,read1 as b,read2 as c 
    from study import * #默认所有可以调用,但是加了__all__[]后,只有里面有的名字才可以用,或者再导入一次要使用的名字
    

     9:包

      从包中导入模块:

      

    import glance2.api.policy as policy
    policy.get()
    # 2
    from glance2.api import policy
    policy.get()
    # 3
    from glance2.api.policy import get
    get()
    

      导入包:

       绝对导入:glance2.api.policy.get()

         导入包的过程发生了什么?

          相当于执行了这个包的__init__.py文件

          sys.patn中的内容,永远是当前你执行的文件

             相对导入: 运用了相对导入的文件,不能被直接执行

        '.'表示当前目录

        '..'表示上级目录

             import glance3

        form outer import glance3

      

  • 相关阅读:
    编译linux内核问题
    linux驱动路径
    plateform_driver_register和plateform_device_register区别
    linux总线、设备和设备驱动的关系
    linux设备驱动模型
    一堆Offer怎么选?这样做就不纠结了
    解决问题最简单的方法
    Android ScrollView嵌套GridView导致GridView只显示一行item
    84. Spring Boot集成MongoDB【从零开始学Spring Boot】
    接手别人的代码,死的心有吗?
  • 原文地址:https://www.cnblogs.com/lijinming110/p/9606379.html
Copyright © 2011-2022 走看看