关于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')
一般将包或者模块放置在启动文件的当前目录
关于python包,模块,.pyc文件和文件导入理解的更多相关文章
- python中的pyc和pyo文件和__pyc__文件夹
一.命令生成 pyc 文件 *.py:源码文件,由 Python 程序解释. *.pyc:源码经编译后生成的二进制字节码(Bytecode)文件. *.pyo:优化编译后的程序,也是二进制字节码文件. ...
- 在windows下使用pip安装python包遇到缺失stdint.h文件的错误
今天在windows上使用pip安装一个python包python-lzf时遇到如下的错误: fatal error C1083: Cannot open include file: 'stdint. ...
- python之模块csv之CSV文件的写入(基本结构)
# -*- coding: utf-8 -*- #python 27 #xiaodeng #CSV文件的写入(基本结构) import csv #csv文件,是一种常用的文本格式,用以存储表格数据,很 ...
- python之模块csv之CSV文件的写入(按行写入)
# -*- coding: utf-8 -*- #python 27 #xiaodeng #CSV文件的写入(按行写入) import csv #csv文件,是一种常用的文本格式,用以存储表格数据,很 ...
- Python 模块化 模块搜索顺序、重复导入、模块加载列表(五)
模块搜索顺序.重复导入.模块加载列表 0x00 模块搜索顺序: 举例: #test.py import sys for p in sys.path: print(p) 运行结果: C:\python ...
- Python shutil模块(目录和文件操作)
import shutil #导入shutil模块 copyfileobj方法 将类文件对象fsrc的内容复制到类文件对象fdst shutil.copyfileobj(fsrc, fdst[, le ...
- 第十九章 Python os模块,pathlib 判断文件是目录还是文件
OS模块 os.path.abspath() :返回path规范化的绝对路径 import sys import os BASE_DIR = os.path.dirname(os.path.dirna ...
- python之模块csv之CSV文件一次写入多行
# -*- coding: utf-8 -*- #python 27 #xiaodeng #CSV文件一次写入多行 import csv #csv文件,是一种常用的文本格式,用以存储表格数据,很多程序 ...
- python codecs模块 ---处理数据写入文件时会有编码不统一的问题
我们用open方法打开文件有时候会有一些问题,因为open打开文件只能写入str类型,而不会管字符串是什么编码方式. 示例: >>> fr = open('test.txt','a' ...
- python查看模块版本及所在文件夹
# 以Numpy为例 第一种方法:import numpy as np np.__version__ >>> '1.12.1' np.__file__ >>> '/ ...
随机推荐
- android 学习mvc 和 mvp 和 mvvm参考项目
githup地址:https://github.com/ivacf/archi 阿尔奇 此存储库展示并比较可用于构建Android应用程序的不同架构模式.完全相同的示例应用程序使用以下方法构建三次: ...
- 【转】使用 Python Mock 类进行单元测试
出处:https://www.oschina.net/translate/unit-testing-with-the-python-mock-class?lang=chs&page=2#
- iOS 生命周期 -init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、viewDidDisappear 区别和用途
iOS视图控制对象生命周期-init.viewDidLoad.viewWillAppear.viewDidAppear.viewWillDisappear.viewDidDisappear的区别及用途 ...
- Lumen开发:lumen源码解读之初始化(4)——服务提供(ServiceProviders)与路由(Routes)
版权声明:本文为博主原创文章,未经博主允许不得转载. 前面讲了singleton和Middleware,现在来继续讲ServiceProviders和Routes,还是看起始文件bootstrap/a ...
- 第8章 Foundation Kit介绍
本文转载至 http://blog.csdn.net/mouyong/article/details/16947321 Objective-C是一门非常精巧实用的语言,目前我们还没有研究完它提供的全 ...
- TP框架---thinkphp中ajax分页
//点击类别后要显示的内容 public function pagechuli3()//这个方法的功能是根据ajax传过来的值查询数据,再将查询出来的数据返回到ajax,返回的默认是JSON类型. { ...
- 记录-MySQL中的事件调度Event Scheduler
下面是自己的实例 /*查询event是否开启(查询结果Off为关闭 On为开启)*/show variables like '%sche%'; /*开启/关闭命令(1开启--0关闭)*/set glo ...
- 【翻译自mos文章】在重建控制文件之前应该考虑的事情
在重建控制文件之前应该考虑的事情 来源于: Things to Consider Before Recreating the Controlfile (文档 ID 1475632.1) 适用于: Or ...
- ubuntu防火墙
开启防火墙 sudo ufw enable 关闭防火墙 sudo ufw disable 查看防火墙状态 sudo utw status
- eclipse---个人设置
window---- preferences -----修改背景颜色 -----修改字体 ----修改窗口主题 ----设置编码 -----设置编译环境 ----设置web项目JDK编译的版本 --- ...