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

      

  • 相关阅读:
    3.Appium运行时出现:Original error: Android devices must be of API level 17 or higher. Please change your device to Selendroid or upgrade Android on your device
    3.Python连接数据库PyMySQL
    2.Python输入pip命令出现Unknown or unsupported command 'install'问题解决
    2.Linux下安装Jenkins
    5.JMeter测试mysql数据库
    Android 4学习(7):用户界面
    Android 4学习(6):概述
    Android 4学习(5):概述
    Android 4学习(4):概述
    Android 4学习(3):概述
  • 原文地址:https://www.cnblogs.com/lijinming110/p/9606379.html
Copyright © 2011-2022 走看看