• 关于python包,模块,.pyc文件和文件导入理解


    参考文献

    一、包

    包是一个文件夹,用来存放模块和子包。

    包里一般会有一个__init__.py的文件(也可以没有)。

    包里会有一个__pycache__文件夹,存放.py文件经解释器解释后的中间字节码(二进制文件)。

    二、模块

    可以作为模块的文件有.py、.pyc、.pyo、.pyd、.so、.dll文件。

    三、.pyc文件与.pyo文件

    这两个文件都是二进制文件,由python解释器将.py文件转化成的二进制文件,目的是加快解释速度且可以隐藏源代码。

    python解释器在解释.py文件时,会优先查看是否有对应的最新的.pyc文件,有的话则直接加载.pyc文件。在加载之前,会检查.pyc文件是不是最新的(判断对应.py文件的修改时间),如果不是最新的,则解释.py文件。

    .pyc文件可以由python自带模块py_compile生成,且会自动生成一个__pycache__文件夹存放.pyc文件。

    如果没有.py文件,只有对应的.pyc文件,也可以调用,因为.pyc文件可以当作模块使用。

    .pyo文件是对.pyc文件的优化版本,作用一致。

    四、__init__.py文件的作用

    __init__.py作用是将包变成一个模块(像.py一样的模块使用)

    假如有个包名称为:package

    1.在该文件中添加__all__=['os','sys','base64']变量,变量内存放着需要使用的模块名称。这样通过from package import *时,就可以将__data__列表内的模块加载进来。

    2.在该文件中添加import os,这样通过package.os就可以调用这个包了(必须加包名)。

    3.import package命令会隐式将__init__模块导入。也就是说可以直接通过package调用包里面调用的类,变量等信息。

    4.如果在package包的__init__.py文件内通过import os导入了包os,在使用package包时使用from package import *,则可以直接使用os.

    如果在__init__.py文件中通过from os import *,则在使用package包时使用from package import *,则可以直接使用os下面的所有函数和变量。

    五、如何将自己写的模块放入包导入路径中

    import sys

    sys.path.append('your path')

    一般将包或者模块放置在启动文件的当前目录

  • 相关阅读:
    Angular @Input讲解及用法
    跨浏览器窗口通讯 ,7种方式
    map和forEach的区别
    纯CSS圆环与圆
    如何理解时间复杂度和空间复杂度
    毁灭
    P1631 序列合并
    plotly dash
    Tkinter
    mysql 和 sqlalchemy 的一个测试环境
  • 原文地址:https://www.cnblogs.com/zhuluqing/p/8832205.html
Copyright © 2020-2023  润新知