• day 29(模块和包)


    阅读目录

    一。模块和脚本

    模块:

      定义:如果一个py文件被导入了,他就是一个模块

    脚本:

      定义:如果一个py文件被直接执行了,那他就是一个脚本

    模块:

      1.没有具体的调用过程

      2.但是能对外提供功能

    当一个模块被导入时,如果pyc文件不存在,python解释器就回去创建,存在不会再次被创建

    pyc编译文件: 文件 -字节码-机器码

      编译的具体过程:

        1.从上到下编译成字节码pyc

        2.从上到下,解释执行代码

     为什么要编译
    # 1.一个文件如果作为模块 一定会经常被导入
    # 2.每次被导入都要经历一个被编译的过程
    # 3.包.编译耗费时间
    # 4.所以模块在被第一次导入的时候被编译存在pyc文件里
    # 5.之后的导入可以直接呐pyc文件中的字节码,就可以直接执行了

    # 编译文件 在模块导入的一瞬间 能够提高代码的执行速度
    # 不能提高程序在具体执行的时候的效率




    引入模块必须满足两个条件:
      1.模块名必须满足变量名的命名规范
      2.被导入的模块所在的位置必须在sys.path所在的搜索路径中


     当login模块被当做脚本执行的时候,能够独立完成登陆功能
    # 当login模块被当做模块导入的时候,需要等待调用才能完成功能
    # 当一个模块被当做脚本执行的时候,__name__是一个字符串数据类型的'__main__'
    # 当一个模块被当做模块导入的时候,__name__是一个字符串数据类型模块名
    if __name__ == '__main__':
    log_in()
    # print('__name__ : ',repr(__name__))

    # if __name__ == '__main__':
    # 控制了
    # 只要当前这个文件直接被执行 就会执行if条件语句内的代码
    # 否则 就不会执行if条件语句内的代码




     模块是对外提供功能的

    # 如果 我写的这个模块 足够大 能提供的功能足够多
    # 多到一个文件写不下
    # 把对外提供的功能 根据提供的内容不同,分成几个文件
    # 把这些文件放在一个文件夹下,就形成了包

    # django框架 包
    # 操作数据库的 模块
    # 和web页面交互的 模块
    # 登录认证 模块
    # 安全的中间件 模块

    # 导入具体的文件
    # from glance.api import policy
    # policy.get()
    #
    # import glance.api.policy as policy
    # # glance.api.policy.get()
    # policy.get()

    # 直接导入包
    import sys
    print(sys.path)


    # import glance
    # 使用绝对路径
    # 导入一个包 相当于 执行了这个包下面的 __init__.py
    # glance #对象
    # glance.api.policy.get()
    # glance.cmd.manage.main()
    # sys.path

    from new_pac import glance

    # 绝对路径
    # 被直接执行的文件与包的关系必须是固定的,
    # 一旦发生改变,包内的所有关系都要重新指定
    # 跨包引用

    # import sys
    # print(sys.path)


    # 在一个py文件中使用了相对路径引入一个模块
    # 那么这个文件就不能被当成脚本运行了



    # 包就是py模块的集合
    # 自带__init__.py文件
    # py2 包中必须有一个__init__.py文件
    # py3
    # 能不能导入一个包:要看sys.path中的路径下有没有这个包
    # 从包中导入模块: 把包与包之间的关系写清楚,精确到模块,就一定能导入
    # 直接导入一个包,并不会导入包下的模块,而是执行这个包下的__init__.py文件
    # 如果对导入还有更高的要求
    # 可以对包中的__init__.py文件做定义
    # 绝对路径导入的方式
    # 相对路径导入的方式 使用相对路径导入的模块不能作为脚本执行


    from new_pec2 import glance
     




     
  • 相关阅读:
    C语言 递归 汉诺塔问题 最大公约数问题
    程序的健壮性及代码风格
    C程序练习
    专题——条件控制循环 猜数游戏 随机种子
    C语言 分支与循环 递推思想 穷举 流程的转移控制
    C指针 指针和数组 二维数组的指针 指针应用
    C语言实现的排序
    数组查找算法的C语言 实现-----线性查找和二分查找
    图片转成base64 跨域等安全限制及解决方案
    移动开发那些坑之——safari mobile click事件的冒泡bug
  • 原文地址:https://www.cnblogs.com/zsdbk/p/8955060.html
Copyright © 2020-2023  润新知