Python基础知识学习(六)——包与模块:指令、包加载步骤、搜索范围

目录

1.模块的使用

2.包的使用


当我们项目越来越复杂,将所有功能写进一个脚本显然不是一个最优的方法,分门别类将不同的功能的语句、函数、对象封装在不同的模块里。什么是一个模块?模块非常简单就是一个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以上若没有初始化东西可以删除。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值