Day05:Python概念:包与模块:指令、包加载步骤、搜索范围;及面对对象编程

本文介绍了Python编程中的模块和包的使用,包括模块的定义、搜索范围和导入过程,以及包的作用和初始化。同时,文章详细探讨了面向对象编程,包括面向对象的步骤、初始化函数、类属性、删除方法、类函数和静态函数,以及属性装饰器的使用。
摘要由CSDN通过智能技术生成

在这里插入图片描述
当我们项目越来越复杂,将所有功能写进一个脚本显然不是一个最优的方法,分门别类将不同的功能的语句、函数、对象封装在不同的模块里。什么是一个模块?模块非常简单就是一个python脚本,在一个项目中我们或许会用到许多模块。而包相当于一个文件夹,里面存放着很多的脚本文件,即模块。

1.模块的使用

定义:实质上就是一个python脚本文件
使用原因:
1.实现代码重用
2.命名空间
3. 实现数据或服务的共享

导入模块的内部步骤

1.找到模块文件
2. 编译为字节码
3. 运行模块文件

模块的搜索范围
1.项目主程序
2.环境变量
3.标准库 (如:math)
4.扩展库

import 导入模块

import math     # 导入python自带的模块math

def hello():


print(math.pi)   # 调用math模块pi变量
if __name__ == "__main__":
    hello()

导入自定义模块,假如我们有一个main.py文件、view.py文件、model.py文件存放在一个路径下
models.py

page = 5
 
def test():
    print('models.test()')
views.py

X = 99
 
def test():
    print('view.test()')

main.py

import models  # 导入相同目录下自定义的models.py
import views  # 导入相同目录下自定义的views.py
 
def hello():
    print(models.page)  # 调用models模块page变量
 
 
if __name__ == "__main__":
    views.test()  # 调用views模块test()函数
    hello()
# 打印结果 
# views.test() 
# 5

from … import … 导入模块中的函数、变量

from models import page  # 导入models模块中的page变量
from views import *  # 导入views模块中的全部对象
 
def hello():
    print(page)  # 调用models模块下的page变量,不需要在使用模块名
 
if __name__ == "__main__":
    hello()

重名:导入的两个模块具有名称相同的两个函数,如上面的views.py和models.py都有test()函数

from models import test as mtest
from views import test as vtest

reload 重新导入模块
​​​​​​​当我们对以前导入模块进行修改后,执行模块中内容发现并没有改变,这是因为模块在导入时被编译为字节码,虽然对模块进行了修改但没有重新编译。如果想使用修改后模块的内容,则需要使用importlib包中的reload函数。

格式:importlib.reload(模块名)

import importlib  # 导入importlib模块
import views
 
importlib.reload(views)  # reload重新加载模块

当导入时没有采取import 模块名,而是使用from 模块 import 成员。导入时不适用

from views import test
import importlib
 
importlib.reload(views)  # 报错
importlib.reload(test)  # 报错
importlib.reload(views.test)  # 报错

2.包的使用

作用:增加区分代码的层级(类似一个文件夹)

假如有main.py文件,与它同级有一个名叫a的包,里面有product.py和__init__.py文件。

product.py文件

X = 100
 
def get_product_list():
    print('产品列表')

main.py文件

import a.product  # 导入包中模块

包中的__init__.py文件作用
初始化一些信息:初始化数据库连接,初始包上下文信息。
init.py

print('a包已被调用')

只有包第一次导入时被编译。python3.3以下不可以删除,python3.3以上若没有初始化东西可以删除。

3面对对象编程

3.1.面向对象编程步骤

OOA面向对象分析
分析对象的特征
分析对象与对象之间的关系:
聚合(如图书上需要有作者,编号等)、复合(如衣服上要有衣领,复合比聚合联系更紧密,聚合可有可没有)、依赖(如开车这个动作需要有车)
分析对象间的继承关系

OOD面向对象设计

写类描述对象的模板,蓝图

OOP面向对象编程

实例化对象的过程

3.2.init()初始化函数

import datetime
 
class Book:
    def __init__(self, title, price, author, publisher, pubdate):
        self.title = title
        self.price = price
        self.author = author
        self.publisher =</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值