11.python开源——工程项目结构
工程项目结构需要先弄清三个概念:包、模块、类
模块对应的是一个.py 文件,那么module_name 就是这个文件去掉.py 之后的文件名,py 文件中可以直接定义一些变量、函数、类。
导入模块
import module_name
from package_name import module_name
from package_name import *
那么如何import 时,python 解释器如何才能找到该模块放置的文件位置呢?python 寻找模块的优先级如下:
1、 当前文件目录
2、 环境变量PYTHONPATH
3、 sys.path(list 类型)
模块在被导入执行时,python解释器为加快程序的启动速度,会在与模块文件同一目录下生成.pyc文件。我们知道python是解释性的脚本语言,而.pyc是经过编译后的字节码,这一工作会自动完成,而无需程序员手动执行。
包
将某些功能相近的文件组织在同一文件夹下,就需要运用包的概念。包对应于文件夹,使用包的方式跟模块也类似,唯一需要注意的是,当文件夹当作包使用时,文件夹需要包含__init__.py文件,主要是为了避免将文件夹名当作普通的字符串。__init__.py的内容可以为空,一般用来进行包的某些初始化工作或者设置__all__值,__all__是在from package-name import *这语句使用的,全部导出定义过的模块。
Python使用缩进对齐组织代码的执行,所有没有缩进的代码(非函数定义和类定义),都会在载入时自动执行,这些代码,可以认为是Python的main函数。
每个文件(模块)都可以任意写一些没有缩进的代码,并且在载入时自动执行,为了区分主执行文件还是被调用的文件,Python引入了一个变量__name__,当文件是被调用时,__name__的值为模块名,当文件被执行时,__name__为'__main__'。这个特性,为测试驱动开发提供了支持,可以在每个模块中写上测试代码,这些测试代码仅当模块被Python直接执行时才会运行,代码和测试完美的结合在一起。
__init__.py
__init__.py可以为空,只要它存在,就表明此目录应被作为一个package处理。当然,__init__.py中也可以设置相应的内容。
__init__ 方法通常用在初始化一个类实例的时候
__all__
在模块(*.py)中使用导出__all__列表里的类、函数、变量等成员,否则将导出所有不以下划线开头(私有)的成员,在模块中使用__all__属性可避免在相互引用时的命名冲突
__path__变量
__path__指定了包的搜索路径
__new__
__new__方法接受的参数虽然也是和__init__一样,但__init__是在类实例创建之后调用,而 __new__方法正是创建这个类实例的方法
依照Python官方文档的说法,__new__方法主要是当你继承一些不可变的class时(比如int, str, tuple), 提供给你一个自定义这些类的实例化过程的途径。还有就是实现自定义的metaclass。
11.python开源——工程项目结构相关推荐
- Python开源项目目录结构参考
python开源项目目录结构参考 转载:http://www.cnblogs.com/holbrook/archive/2012/02/24/2366386.html 原作者:心内求法 每个真正的程序 ...
- 近万个Python开源项目中精选Top34!
作者 | Mybridge 编译 | 仲培艺 出品 | CSDN(ID:CSDNNews) [导语]踏着人工智能.区块链的东风,近年来一路"横冲直撞"的 Python 在实现了从小 ...
- 最受欢迎 Top 12 Python 开源框架,你都用过吗?
作者 | 学Python的阿勇 责编 | 夕颜 出品 | CSDN博客 今天给大家带来了12个在GitHub等开源网站中最受欢迎的Python开源框架.如果你正在学习python,那么这12个开源框架 ...
- 以下选项中python用于异常处理结构_《Python 程序设计》复习题
目录 填空题 一.基础知识 二.序列 三.选择结构与循环结构和函数及面向对象.文件 选择题 一.Python 基础语法 二.基本数据类型 三.程序的控制结构 四.函数和代码复用 五.组合数据类型 六. ...
- python开发框架大全_最受欢迎 Top 12 Python 开源框架,你都用过吗?
作者 | 学Python的阿勇 责编 | 夕颜 出品 | CSDN博客 今天给大家带来了12个在GitHub等开源网站中最受欢迎的Python开源框架.如果你正在学习python,那么这12个开源框架 ...
- 15 个常用的python 开源框架
注册登录 shaomine 博客园 首页 新随笔 联系 订阅 正在上传-重新上传取消 管理 随笔 - 579 文章 - 1 评论 - 69 阅读 - 253万 15个最受欢迎 ...
- 目前最受欢迎的12个Python开源框架,你用过几个?
今天给大家带来了12个在GitHub等开源网站中最受欢迎的Python开源框架.如果你正在学习python,那么这12个开源框架,千万别错过,这些框架包括事件I/O,OLAP,Web开发,高性能网络通 ...
- Python 开源库及示例代码
Python 开源库及示例代码 更多干货 分布式实战(干货) spring cloud 实战(干货) mybatis 实战(干货) spring boot 实战(干货) React 入门实战(干货) ...
- 2019 年最受欢迎的 Python 开源项目盘点!
点击上方"Python技术之巅",马上关注,每天下午17:40准时推送 真爱,请置顶或星标 Python是当下最火的编程语言之一,在GitHub上有大量热门开源项目,近日开源众包平 ...
最新文章
- 如何可以让球的时速达到100公里?
- POJ-1845 数论
- Egret开发HTML5小游戏代码分享
- java 传绝对路径无效_【Java并发005】原理层面:volatile关键字全解析
- android api接口封装,android-apidesigner是一个网络接口封装工具
- Django Model出现的中文问题
- UEditor手动调节其宽度
- Python 实现窗函数
- 1156 Sexy Primes – PAT甲级真题
- Python-OpenCV4中的阈值二值化函数threshold(),要特别注意其返回值有两个
- 解封反垃圾邮件组织屏蔽方法
- 湖南省中职计算机应用教资面试流程?
- 青春期发育阶段的测量
- 使用DataGrip连接神通数据库
- 查看电脑连接的WiFi密码的两种方法
- 交易日九点到九点半的挂单撤单以及价格的一点心得
- HZYWX-技术交流-开发中的导入导出
- 首款开源软硬一体OpenCV AI Kit(OAK)用户问题官方答疑实录 QA
- win10打开程序响应很慢_【电脑维护宝典】WIN10系统下的电脑维护
- Ath10k Candela Technologies
热门文章
- 海贼王热血航线正在连接服务器,航海王热血航线连接服务器失败 进不去游戏解决方法...
- 艺术|油画|欣赏| 遥想当年赤壁
- CE修改器使用教程 (基础知识)扫雷逆向复现
- uploadify上传文件出现http302错误
- 等价划分类以及如何编写测试用例
- Python中输入和输出
- 人生重要的不是能力而是性格(75条)
- C#连接数据库时Appsettings 与connectionStrings的区别
- Node.js + puppeteer爬取推特ChineseVirus評論(1)
- python 0xa什么意思_python中rb是什么意思