一、包
- 在程序执行的时候,是有一个入口变量’name’,入口变量一般默认等于‘main’,表示默认优先 执行main脚本文件。
- 我们同样可以通过设置来设置执行文件
- 注意:写作双横线:name
3. 模块
因功能而异,将不同功能代码写作不同文件,每个文件就是一个模块
模块使用:
1。import–(可导入目录中自定义的模块)直接导入了模块中的全部方法。
2。from(从xx地方导入)
比如:表示从models模块里引入pages函数,那么在下方使用函数时,就不用写模块引用models.pages(),直接写pages()函数即可
2。from 模块 import * 还是表示引入模块内所有东西
3。在两个模块中有名字相同的函数,例如下图,函数名均为test()
处理方法:
1。引用函数加模块,如:models.test()
view.test()
2。引入函数时,起个别名,格式:
from 模块名 import 函数名 as 新的别名
4。实际开发中,导入模块最好。
5。引入模块时,具体是怎么引入的?
6。模块更新与重载
当导入的模块内容更新时,即使运行程序,也无法和更新后的模块一致,那是因为模块导入编译为字节码,运行模块文件后,模块重新改变,没有重新导入,运行时运行的还是已经编译 为字节码的老模块内容;
解决方法:
1。在控制台输入指令,重新导入一次模块;
2。使用重载函数:如下:
注意:importlib.reload(模块名) 此函数只认识模块,只能重载 import 模块 方式的引入;
from引入的无法重载:
二、包
对于目录下的模块进行统一管理,需要引入“包”的概念
1。引入包中的模块:import 包.模块
2。引入当前目录下的包中模块(有好几重文件夹)
import .a.模块----- .a前面的点表示默认当前目录下查找
三、面向对象oop01
抛开代码,按照计算机围绕人的思想走。
万物皆对象:重点在于分析对象本身具有的特征、行为
面向对象的三个典型特征:封装、继承、多态
- 封装:提高代码重用性,降低代码冗余
比如:定义函数,定义其特征量,都属于封装
以上是单纯用代码表示面向对象(还没有引入类的概念) - **继承:**有点类似于大类包含小类
面向对象的步骤
1。面向对象分析OOA
2。面向对象设计OOD
3。面向对象编程OOP
以图书为例,分析其特征和行为:
写‘’类‘’的目的:定义对象
类:class
pass是占位符
1。构造函数–给具体的对象实例赋值
以一本书为例,书的定价,作者等等需要初始设置,因此定义的初始化函数如下:
实例初始化参数设置
引入日期的包,datetime.date(日期)的日期不是字符串,可以参与日期的计算
**初始化函数只是 定义了对象的特征。**只要实例化,就默认已经执行了初始化函数
类中还可以定义其他函数用来描述类的行为:
从模块内导入一个类:
表示:将main中实例化后的类实例导入
交互性提示符下进行操作,打出实例名称,返回地址,但这对开发者来说意义不明,因此引入函数__repr__(self)
有repr函数后,实例化后,在交互性提示符中输入实例名:不再返回地址: