Python基础教程:用模块化来搭项目
单模块化
- import 最好在最顶端
- sys.path.append("…")表示把当前程序所在位置向上提了一级 [python 3.6 以上要加上
sys.path.extend([os.path.join(root, name) for root, dirs, _ in os.walk("../") for name in dirs])
- 在python3规范中,init.py并不是必须的。
文件结构:
.
├── utils
│ ├── util.py
│ └── class_util.py
├── src
│ └── sub_main.py
└── main.py
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,
互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# utils/utils.pydef get_sum(a, b):return a + b
# utils/class_utils.pyclass Encoder(object):def encode(self, s):return s[::-1]class Decoder(object):def decode(self, s):return ''.join(reverse(list(s)))
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,
互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# main.pyfrom utils.utils import get_sumprint(get_sum(1, 2))########## 输出 ##########3
# src/sub_main.pyimport sys
sys.path.append("..")from utils.class_utils import *encoder = Encoder()
decoder = Decoder()print(encoder.encode('abcde'))
print(encoder.encode('edcba'))########## 输出 ##########edcba
abcde
项目模块化
以下Python代码用命令行运行main.py会出错,找不到proto.
├── proto
│ ├── mat.py
├── utils
│ └── mat_mul.py
└── src└── main.py
# proto/mat.pyclass Matrix(object):def __init__(self, data):self.data = dataself.n = len(data)self.m = len(data[0])
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,
互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# utils/mat_mul.pyfrom proto.mat import Matrixdef mat_mul(matrix_1: Matrix, matrix_2: Matrix):assert matrix_1.m == matrix_2.nn, m, s = matrix_1.n, matrix_1.m, matrix_2.mresult = [[0 for _ in range(n)] for _ in range(s)]for i in range(n):for j in range(s):for k in range(m):result[i][k] += matrix_1.data[i][j] * matrix_2.data[j][k]return Matrix(result)
# src/main.pyfrom proto.mat import Matrix
from utils.mat_mul import mat_mula = Matrix([[1, 2], [3, 4]])
b = Matrix([[5, 6], [7, 8]])print(mat_mul(a, b).data)########## 输出 ##########[[19, 22], [43, 50]]
有两个方法解决:
1.在文件中强行修改sys.path[0]:
import syssys.path[0] = '/home/ubuntu/workspace/your_projects'
2.在Python的虚拟环境中的activate文件,增加:(windows系统中无效)
export PYTHONPATH="/home/ubuntu/workspace/your_projects"
Python基础教程:用模块化来搭项目相关推荐
- python基础教程笔记—即时标记(详解)
最近一直在学习python,语法部分差不多看完了,想写一写python基础教程后面的第一个项目.因为我在网上看到的别人的博客讲解都并不是特别详细,仅仅是贴一下代码,书上内容照搬一下,对于当时刚学习py ...
- python即时标记_【Python】读书笔记:Python基础教程-项目1-即时标记
功能:给文本添加HTML标记,使得到的文档能够在浏览器中显示并能作为一个网页使用. 要求: 输入不应包含人工代码或标签: 应能处理不同的块,比如标题.段落.列表项.内嵌文本(比如被强调的文本.URL等 ...
- 【Python】读书笔记:Python基础教程-项目1-即时标记
功能:给文本添加HTML标记,使得到的文档能够在浏览器中显示并能作为一个网页使用. 要求: 输入不应包含人工代码或标签: 应能处理不同的块,比如标题.段落.列表项.内嵌文本(比如被强调的文本.URL等 ...
- python基础教程第二版和第三版哪个好-python基础教程 2版和3版哪个适合新手?!...
python基础教程 2版和3版哪个适合新手? 现在学是学python3. 两者的差异发者本身影响并不大,个别语法细微的差比如python3的print数方式使用,一些常用模块的名称差异,一些机制的差 ...
- python基础教程第二版答案-《Python基础教程》(第2版修订版)中要注意的地方...
想必现在大家学习Python都会用3.0及以上的版本了,虽然2.X的版本依然很多,但是这两年随着部分开源项目不再支持2.X版本,3.X已经成为趋势. 正是在这样的大背景下,我最近用这本<Pyth ...
- python基础教程第三版电子版百度云-《python基础教程第三版》高清版PDF免费下载...
下载地址1:http://t.cn/EGxO1sW Python基础教程 第3版Python简明教程书籍 Python编程从入门到实践 灵程序设计丛书 <python基础教程第三版>高清版 ...
- python基础教程视频(全13集)-Python基础视频教程(600集)【传智播客精品教程】...
Python基础视频教程 初级共600节课 本套视频是传智播客紧抓未来最大趋势--人工智能,应运而生的一套Python入门视频教程,Python是学习人工智能的首选语言,而该视频是专门针对零基础的学员 ...
- python基础教程第三版和第二版选哪个-python基础教程 2版和3版哪个适合新手?!...
python基础教程 2版和3版哪个适合新手? 现在学是学python3. 两者的差异发者本身影响并不大,个别语法细微的差比如python3的print数方式使用,一些常用模块的名称差异,一些机制的差 ...
- python基础教程第二版和第三版有什么区别-《Python基础教程》(第2版修订版)中要注意的地方...
想必现在大家学习Python都会用3.0及以上的版本了,虽然2.X的版本依然很多,但是这两年随着部分开源项目不再支持2.X版本,3.X已经成为趋势. 正是在这样的大背景下,我最近用这本<Pyth ...
最新文章
- Ubuntu Server 12.04下cobbler + dnsmasq +tftpd-hpa的安装配置(四)
- Hadoop中-put和-copyFromLocal的区别
- MySQL——修改root密码的4种方法(以windows为例)
- 取文件 shell_webshell文件上传分析溯源
- Vmware16一打开虚拟机就蓝屏
- Log4j(1)--hellloworld
- 微信小程序css之线性渐变
- 【POJ1584】A Round Peg in a Ground Hole,第一次的计算几何
- Kitura —— 基于 Swift 的 Web 框架
- 优化器——梯度下降优化算法综述
- Linux 链接网络
- 完全卸载vs2013 2015
- php记录sql语句,sql语句记录
- 扩展卡尔曼滤波soc估算 基于EKF算法的锂电池SOC
- JS调用Arcgis实现地图中心点画圆
- memset使用最详细细节
- 什么是JIT,JDK17移除了JIT?
- 【硬件之AD篇】两层PCB的各个板层分析
- SharePoint 2010 ——自定义上传页面与多文件上传解决方案
- 手机游戏:崇尚简单至上和零碎娱乐的永恒价值
热门文章
- oc 调用c语言方法和oc的方法调用
- 在参数上使用@Param(“paramName”)注解”解决了传多个参数的问题
- PHP伪静态与防注入
- VS2008中vss的设置
- 实用正则表达式(实用篇)
- Mastering Caching in Asp.net
- mysql 同步中历史记录_[Mysql]备份同库中一张表的历史记录 insert into ..select
- 会计科目****不能使用(请更正)
- 如何在Excel中使用VB宏连接SAP系统
- 未对销售组织 XXX 分销渠道 00 语言 ZH 定义