单模块化

  • 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基础教程:用模块化来搭项目相关推荐

  1. python基础教程笔记—即时标记(详解)

    最近一直在学习python,语法部分差不多看完了,想写一写python基础教程后面的第一个项目.因为我在网上看到的别人的博客讲解都并不是特别详细,仅仅是贴一下代码,书上内容照搬一下,对于当时刚学习py ...

  2. python即时标记_【Python】读书笔记:Python基础教程-项目1-即时标记

    功能:给文本添加HTML标记,使得到的文档能够在浏览器中显示并能作为一个网页使用. 要求: 输入不应包含人工代码或标签: 应能处理不同的块,比如标题.段落.列表项.内嵌文本(比如被强调的文本.URL等 ...

  3. 【Python】读书笔记:Python基础教程-项目1-即时标记

    功能:给文本添加HTML标记,使得到的文档能够在浏览器中显示并能作为一个网页使用. 要求: 输入不应包含人工代码或标签: 应能处理不同的块,比如标题.段落.列表项.内嵌文本(比如被强调的文本.URL等 ...

  4. python基础教程第二版和第三版哪个好-python基础教程 2版和3版哪个适合新手?!...

    python基础教程 2版和3版哪个适合新手? 现在学是学python3. 两者的差异发者本身影响并不大,个别语法细微的差比如python3的print数方式使用,一些常用模块的名称差异,一些机制的差 ...

  5. python基础教程第二版答案-《Python基础教程》(第2版修订版)中要注意的地方...

    想必现在大家学习Python都会用3.0及以上的版本了,虽然2.X的版本依然很多,但是这两年随着部分开源项目不再支持2.X版本,3.X已经成为趋势. 正是在这样的大背景下,我最近用这本<Pyth ...

  6. python基础教程第三版电子版百度云-《python基础教程第三版》高清版PDF免费下载...

    下载地址1:http://t.cn/EGxO1sW Python基础教程 第3版Python简明教程书籍 Python编程从入门到实践 灵程序设计丛书 <python基础教程第三版>高清版 ...

  7. python基础教程视频(全13集)-Python基础视频教程(600集)【传智播客精品教程】...

    Python基础视频教程 初级共600节课 本套视频是传智播客紧抓未来最大趋势--人工智能,应运而生的一套Python入门视频教程,Python是学习人工智能的首选语言,而该视频是专门针对零基础的学员 ...

  8. python基础教程第三版和第二版选哪个-python基础教程 2版和3版哪个适合新手?!...

    python基础教程 2版和3版哪个适合新手? 现在学是学python3. 两者的差异发者本身影响并不大,个别语法细微的差比如python3的print数方式使用,一些常用模块的名称差异,一些机制的差 ...

  9. python基础教程第二版和第三版有什么区别-《Python基础教程》(第2版修订版)中要注意的地方...

    想必现在大家学习Python都会用3.0及以上的版本了,虽然2.X的版本依然很多,但是这两年随着部分开源项目不再支持2.X版本,3.X已经成为趋势. 正是在这样的大背景下,我最近用这本<Pyth ...

最新文章

  1. Ubuntu Server 12.04下cobbler + dnsmasq +tftpd-hpa的安装配置(四)
  2. Hadoop中-put和-copyFromLocal的区别
  3. MySQL——修改root密码的4种方法(以windows为例)
  4. 取文件 shell_webshell文件上传分析溯源
  5. Vmware16一打开虚拟机就蓝屏
  6. Log4j(1)--hellloworld
  7. 微信小程序css之线性渐变
  8. 【POJ1584】A Round Peg in a Ground Hole,第一次的计算几何
  9. Kitura —— 基于 Swift 的 Web 框架
  10. 优化器——梯度下降优化算法综述
  11. Linux 链接网络
  12. 完全卸载vs2013 2015
  13. php记录sql语句,sql语句记录
  14. 扩展卡尔曼滤波soc估算 基于EKF算法的锂电池SOC
  15. JS调用Arcgis实现地图中心点画圆
  16. memset使用最详细细节
  17. 什么是JIT,JDK17移除了JIT?
  18. 【硬件之AD篇】两层PCB的各个板层分析
  19. SharePoint 2010 ——自定义上传页面与多文件上传解决方案
  20. 手机游戏:崇尚简单至上和零碎娱乐的永恒价值

热门文章

  1. oc 调用c语言方法和oc的方法调用
  2. 在参数上使用@Param(“paramName”)注解”解决了传多个参数的问题
  3. PHP伪静态与防注入
  4. VS2008中vss的设置
  5. 实用正则表达式(实用篇)
  6. Mastering Caching in Asp.net
  7. mysql 同步中历史记录_[Mysql]备份同库中一张表的历史记录 insert into ..select
  8. 会计科目****不能使用(请更正)
  9. 如何在Excel中使用VB宏连接SAP系统
  10. 未对销售组织 XXX 分销渠道 00 语言 ZH 定义