【Python 基础教程】合理的使用模块与包

简介: 【Python 基础教程】合理的使用模块与包

👾前言👾


Python语言语法灰常的简单,大家也许被他的语法和成千上万个优秀的第三方库迷惑的不要不要的,Python的包管理工具没有像Java的Maven那样成熟,直接导入即可。如果不知道Python的一些包管理底层原理可能会在项目配置项目搭建上因为包的导入导出而费尽心思。今天就对Python底层的包管理进行一下剖析。然后讲一下导包常遇见的问题以及如何对项目进行打包。


🍁前置知识(目标)🍁


  • 理解包与模块的概念与区别
  • 理解运行时导包的顺序,Python解释器如何解析包
  • 掌握查看包、模块相关信息的函数


🤺为什么需要将程序模块化?🤺


💫开发的便利性而言


在日常进行程序开发的时候,如果项目很大不对程序进行模块化处理就会导致如果前一部分工作没有进展,则后续的工作更加无法进展。即使有再多的技术人员也无尽于事。如果将程序模块化后,分工给具体的人。则可以同时进行开发,最后对程序进行简单的组合即可。时间上互不影响。效率大大提升。



💫软件后期升级与维护而言


软件工程中一直流行一种思想“高内聚,低耦合”。使用这样的思想开发出的软件更加有利于后期的维护。高内聚就是各个模块内部应该紧密联系,减少不必要的代码。低耦合指的就是模块化,每个模块干啥事应该事先规定好。并且模块间依赖关系不要那么强。这样可以把程序的功能像插销与插座一样进行插拔。从而有利于后期的维护与更新。


🤺Python包管理工具pip🤺


💫简介


Python有成千上万的宝藏库,这些库相当于是已经集成好的工具,只要安装就能在Python里使用。 它们可以处理各式各样的问题,无需你再造轮子,而且随着社区的不断更新维护,有些库越来越强大,几乎能媲美企业级应用。 怎么下载安装呢?它们被放在一个统一的“仓库”里,名叫PyPi(Python Package Index),所有的库安装都是从这里调度。 有了仓库之后,还需要有管理员,pip就是这样一个角色。使用pip进行库的安装的时候默认是去外网下载的。所以大家有些库可能会安装不成功。有两种解决方式:一、科学上网 二、替换镜像源。


pip会默认将install的包安装到当前用户的工作目录下。解释器在进行导包搜索的时候现在当前目录搜索,再去操作系统环境变量PYTHONPATH指定的路径中搜索,最后去Python标准库搜索。有可能会出现用户工作目录中的包在py文件中无法使用的情况,这时候需要我们手动的把相应的包移动到Python的安装目录下的py+版本号\Lib\site-packages中。或者指定包的安装目录。 pip install -t py安装路径\Lib\site-packages 包名


💫常用的指令


🥴升级pip版本


pip install --upgrade pip



🥴常规库的安装


pip install 库名
• 1


🥴指定库的版本安装


pip install 库名==版本号


🥴卸载已安装的库


pip uninstall 库名
• 1


🥴列出已经安装的库


pip list
• 1


🥴将已经安装的库列表保存到文本文件中


pip freeze > 文件名


🤺模块与包🤺


💫基本概念


什么是模块?

模块指的是一块具有共同特点的代码。在Python中一个模块就是一个.py文件。Python的内置模块是用C语言编写的程序,可以使用C/C++扩展编写模块。

什么是包?

在Python中包就是一个文件夹,一个包中可以包含很多子包。每个包中至少包含一个__init__.py文件,在进行导包的时候首先执行__init__.py文件。

.pyc文件是干嘛的?

每个包中在被导入之后都会生成一个__pycache__文件夹。内部包含.pyc文件。.pyc结尾的文件是一个编译后的字节码文件。下次导包的时候会根据.py与.pyc的时间戳进行对比。如果没有修改就直接通过.pyc文件导入。生成.pyc文件是自动的,不需要程序员插手。


💫几种常见的导包方式


普及一个小知识

成员作用符(C++中指的是某对象的某成员) (Python中用于限定某模块中的某方法或函数、类)

.

域作用符(C++指某个命名空间下的某个类)(Python中目前木有见过)

: :

🥴1.导入模块


# 导入模块
import math
# 使用模块中的元素
math.pi


🥴2.从包中导入模块


from http import server
print(server.__name__)

🥴3.从包中导入模块中的元素


from http.server import __name__
print(__name__)


🤺运行时包、模块的管理🤺

💫什么时间导包?按什么顺序导包


Python解释器在主程序运行开始的时候将所有要用到的包导入。如果多次导入仅仅只会执行包内的代码一次。如果不重新加载包或动态导包。那么旧包中的内容更新后运行中的Python程序不会感受到。导包的搜索顺序一般如下:


当前目录

操作系统环境变量PYTHONPATH

Python标准库目录

sys.path 这是一个列表,搜索包的时候会迭代这个列表中的所有路径(可以人为的向列表中添加路径)

一般结合sys.path[0]------当前工作路径使用。可以自定义包的位置

值得注意的是:sys.path[0]并不会随着代码所在的模块改变而改变(sys.path[0]存的是主程序文件所在的路径)

主程序就是__name__==__main__的程序(也就是运行入口模块),普通模块的__name__是自己的模块名。

导包的时候会先将被导包程序中的代码运行一遍(除被导入模块中__name__=="__main__"下面的代码)


💫重新加载包


解决程序运行过程中,导入的包更新的问题。


import importlib
import 我的包名
importlib.reload(我的包名)


💫动态导包(运行过程中导包)


导包时程序刚开始运行时候的工作,如果当时不进行包的导入可以后期动态的通过该方法进行导包,import 关键字底层调用的也是这个函数进行导包。


动态导包使用的是__import__(),直接将要导入的包名(字符串形式)传进函数内即可。

eg:


m=__import__("sys")


🤺打包项目🤺


可以使用pip install PyInstaller 安装打包工具
然后切换到你要打包项目的主程序所在的目录,使用pyinstaller -F 文件所在的路径打包.py文件
(-F是只生成一个可执行文件)
相关文章
|
3月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
422 7
|
3月前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
294 0
|
3月前
|
JSON 算法 API
Python中的json模块:从基础到进阶的实用指南
本文深入解析Python内置json模块的使用,涵盖序列化与反序列化核心函数、参数配置、中文处理、自定义对象转换及异常处理,并介绍性能优化与第三方库扩展,助你高效实现JSON数据交互。(238字)
420 4
|
4月前
|
数据采集 存储 XML
Python爬虫技术:从基础到实战的完整教程
最后强调: 父母法律法规限制下进行网络抓取活动; 不得侵犯他人版权隐私利益; 同时也要注意个人安全防止泄露敏感信息.
787 19
|
3月前
|
索引 Python
Python 列表切片赋值教程:掌握 “移花接木” 式列表修改技巧
本文通过生动的“嫁接”比喻,讲解Python列表切片赋值操作。切片可修改原列表内容,实现头部、尾部或中间元素替换,支持不等长赋值,灵活实现列表结构更新。
154 1
|
3月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
337 0
|
3月前
|
XML JSON 数据处理
超越JSON:Python结构化数据处理模块全解析
本文深入解析Python中12个核心数据处理模块,涵盖csv、pandas、pickle、shelve、struct、configparser、xml、numpy、array、sqlite3和msgpack,覆盖表格处理、序列化、配置管理、科学计算等六大场景,结合真实案例与决策树,助你高效应对各类数据挑战。(238字)
231 0
|
4月前
|
安全 大数据 程序员
Python operator模块的methodcaller:一行代码搞定对象方法调用的黑科技
`operator.methodcaller`是Python中处理对象方法调用的高效工具,替代冗长Lambda,提升代码可读性与性能。适用于数据过滤、排序、转换等场景,支持参数传递与链式调用,是函数式编程的隐藏利器。
152 4
|
4月前
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
370 0
|
4月前
|
数据采集 存储 JSON
使用Python获取1688商品详情的教程
本教程介绍如何使用Python爬取1688商品详情信息,涵盖环境配置、代码编写、数据处理及合法合规注意事项,助你快速掌握商品数据抓取与保存技巧。

推荐镜像

更多