Python第三周第一次作业中关于工程目录各种导入的模拟学习
@
Python工程目录 导入自定义模块, 包
工程目录与
模块和包,软件开发规范相关联
记录的缘由
提交
memo工程作业的时候助教提出包内过多的绝对路径,所以记录此篇绝对路径使用的原因是第一次提交工程目录作业,在模拟测试时无法将文件记录保存到相应的文件夹内所以在模块中写死路径从而实现需求核心思路: 解耦
设计的核心思想:尽可能减少代码耦合,如果发现代码耦合,就要采取解耦技术。让数据模型,业务逻辑和视图显示三层之间彼此降低耦合,把关联依赖降到最低,而不至于牵一发而动全身。原则就是A功能的代码不要写在B的功能代码中,如果两者之间需要交互,可以通过接口,通过消息,甚至可以引入框架,但总之就是不要直接交叉写
Although that way may not be obvious at first unless you're Dutch. --by Tim Peters
在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Module)
模块搜索路径
python解释器在启动时会自动加载一些模块,可以使用sys.modules查看
在第一次导入某个模块时(比如memo),会检查该模块是否已经被加载到内存中(执行文件的名称空间对应的内存),如果有则直接引用,如果没有,解释器则会查找同名的内建模块,如果还没有找到就从sys.path给出的目录列表中依次寻找memo.py文件.
总结模块的查找顺序:内存中已经加载的模块-->内置模块-->sys.path路径中包含的模块
需要特别注意的是:我们自定义的模块名不应该与系统内置模块重名。
在模块入口初始化,python程序可以修改sys.path路径, 放到前面的优先于标准库被加载
import sys
sys.path.append(路径) # 往sys.path里面添加路径```
## 模块:
1. 把模块当做脚本执行:
我们可以通过模块的全局变量`__name__`来查看模块名
2. 当做脚本运行:
`__name__` 等于`'__main__'`
3. 当做模块导入:
`__name__` 等于模块名
- `如果一个py文件被导入了,他就是一个模块`
- `如果这个py文件被直接执行,这个被直接执行的文件就是一个脚本`
>作用:用来控制.py文件在不同的应用场景下执行不同的逻辑
https://www.py3study.com/Article/details/id/229.html
## 导入模块
### 导入函数
>https://www.cnblogs.com/lataku/p/10434812.html#%E5%AF%BC%E5%85%A5%E6%A8%A1%E5%9D%97%E7%9A%84%E6%96%B9%E6%B3%95%E5%A6%82%E4%B8%8B
### 导入类
1. 随着你不断给类添加功能,导致`py文件`会变得越来越长, 为遵循Python的总体理念,应该让文件尽可能的整洁,方便阅读.
- `重构, 是一种美德`
2. 自定义工作流程:
- 首先: 尽可能的在一个`py文件`中完成需求内容, 确定一切都能正常运行后就可以对文件的类方法进行拆分
- 其次: 将类移动到独立的模块中, 让一个模块完成一项工作
- 最后: 可以让文件和模块获得友好的交互, 这样的代码更具有组织,更为有序,修改时更为高效
演示过程采用截图..因为要使用IDE
#### 导入单个类:
- 创建一个`car.py`文件
- 新增`my_car.py`文件,导入`car.py`并创建其实例

### 多个类
1. 一个模块存储多个类,并调用
2. 一个模块导入多个类
3. 导入整个类

```python
# 从一个模块导入多个类
from car import Car, ElectCar
my_bettle = Car('绿绿的电池', 'bettle', 2015)
print(my_bettle.get_descriptive_name())
my_elect_car = ElectCar('tesla', 'rode', 2018)
print(my_elect_car.get_descriptive_name())
# ------------分割线------------
# 导入整个模块
import car
my_bettle = car.Car('volk', 'bettle', 2008)
print(my_bettle.get_descriptive_name)
my_elect_car = ElectCar('tesla', 'rode', 2018)
print(my_elect_car.get_descriptive_name())
然后:
重构吧,把路径部分再写一个settings.py,然后调用
Python第三周第一次作业中关于工程目录各种导入的模拟学习的更多相关文章
- OneZero第三周第一次站立会议(2016.4.4)
1. 时间: 13:30--13:45 共计15分钟. 2. 成员: X 夏一鸣 * 组长 (博客:http://www.cnblogs.com/xiaym896/), G 郭又铭 (博客:http ...
- VS做简历的第三天(将文件中的样式保存并且导入)
VS做简历的第三天(将文件中的样式保存并且导入) 1.先在文件栏新建一个CSS文件 如 2.将第二天如下代码,删除<stype></stype>保留中间部分,复制在CSS文件并 ...
- android组团开发站立会议第三周第一次会议
会议时间:组队开发第三周 星期一 开始时间晚上9:30-10:00 会议地点:学一食堂 二楼 到会人员:李志岩 王亚蕊 安帅 薛禄坤 张新宇 孙存良 会议概要: 1. ...
- 第三次预作业20155231邵煜楠:虚拟机上的Linux学习
java第三次预作业--虚拟机初体验(学习记录) 学习在笔记本上安装Linux操作系统 通过老师给予的官网链接,下载了VirtualBox-5.1.14-112924-win和Ubuntu-16.04 ...
- 吴恩达深度学习第4课第3周编程作业 + PIL + Python3 + Anaconda环境 + Ubuntu + 导入PIL报错的解决
问题描述: 做吴恩达深度学习第4课第3周编程作业时导入PIL包报错. 我的环境: 已经安装了Tensorflow GPU 版本 Python3 Anaconda 解决办法: 安装pillow模块,而不 ...
- (OpenExplorer For Eclipse)Eclipse 中打开工程目录的插件(转)
我们想在Eclipse中的打开工程目录,Eclipse 自身没有这个功能,我们可以安装一个插件来实现这个功能.具体的操作方法如下: (1).到以下链接中下载插件:https://github.com/ ...
- Eclipse 中打开工程目录的插件
我们想在Eclipse中的打开工程目录,Eclipse 自身没有这个功能,我们可以安装一个插件来实现这个功能.具体的操作方法如下: (1).到以下链接中下载插件:https://github.com/ ...
- python第三天 变量 作业
作业1,模拟登陆:1. 用户输入帐号密码进行登陆2. 用户信息保存在文件内3. 用户密码输入错误三次后锁定用户 使用文件:user_file.txt 用户列表文件. 格式:{'张三':'12 ...
- JAVA第三周课后作业
JAVA课后作业 一.枚举类型 代码: enum Size{SMALL,MEDIUM,LARGE}; public cl ass EnumTest { public static void main( ...
随机推荐
- 责任链模式-Chain of Responsibility(Java实现), 例1
责任链模式-Chain of Responsibility, 例1 在这种模式中,通常每个接收者都包含对另一个接收者的引用.如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推. ...
- HBase读写的几种方式(三)flink篇
1. HBase连接的方式概况 主要分为: 纯Java API读写HBase的方式: Spark读写HBase的方式: Flink读写HBase的方式: HBase通过Phoenix读写的方式: 第一 ...
- c语言编译四大步
-o: 指定生成后的文件名,后面跟指定的名称 四步:-E 预处理 > -S 编译 > -c 汇编 > 链接 -E: 表示预处理,生成文件为.i,会做宏(define)定义的展开.头文 ...
- 解决MySQL Access denied for user 'root'@'IP地址' 问题
1.mysql -u root -p 登陆进MYSQL: 2.执行以下命令: GRANT ALL PRIVILEGES ON *.* TO 'your name'@'%' IDENTIFIED BY ...
- sqlyog试用期到期--win10
1.win+R打开搜索框,输入regedit,打开windows注册表 2.删除HKEY_CURRENT_USER 下 software 的前几个随机编码.
- Win10蓝屏的一些解决办法
请仔细回想这个错误是什么时候出现的: 第一次发生时你对系统做了哪些操作: 发生时正在进行什么操作: 从这些信息中找出可能的原因: 从而选择相应解决方案并尝试排除. 0x0000000A:IRQL_NO ...
- 基于Python的Webservice开发(三)-Django安装配置
一.安装Django pip install django 二.创建项目 进入指定的目录后 django-admin startproject WebApi 目录说明: WebApi 项目的容器. m ...
- 【译】索引进阶(十三):SQL SERVER中的索引碎片【下篇】
原文链接:传送门. 通用碎片模式 如果一个表具有多个索引,那么这些索引便具有多个索引键,因而也具有不同的顺序.通常情况下,这些索引中的一两个展示了之前描述过的升序插入模式,而其他的通常展示了随机插入模 ...
- 使用freemarker模板引擎生成word文档的开发步骤
1.准备模板文档,如果word文档中有表格,只保留表头和第一行数据:2.定义变量,将word文档中的变量用${var_name}替换:3.生成xml文件,将替换变量符后的word文档另存为xml文件: ...
- 某喷码机品牌U盘存储的配置文件简记
U盘下的 KadexMicro 文件夹是喷码机生成的. 其配置文件存储在如上图位置,后缀 .mjt 实为 xml 文件. 内容如: <?xml version="1.0" e ...