Python包、模块、库辨析

news2024/9/22 2:13:37

目录

1 模块的基础介绍

2 包的概念解析

3 库的定义与作用

4 区分三者

5 实例

__init__.py

addition.py

multiplication.py

main_scipt


1 模块的基础介绍

模块是 Python 编程的基本组成部分之一,它是单个文件 ,包含 Python 代码,可以定义函数、类和变量。模块是一个独立的文件,通常以 .py 扩展名结束。通过导入模块 ,可以使用该模块中定义的所有功能 ,从而重用代码。

导入模块后,可以访问其内部的属性和方法。Python 中有标准库模块,它们提供了丰富的功能集,如文件 I/O、网络请求等。除了标准库之外,开发者还可以创建自己的模块 ,以封装特定的功能或业务逻辑。

实例代码:

在这个例子中,addition.py是一个简单的模块,它定义了一个 add 函数,该函数接受两个参数,并返回相加后的值

2 包的概念解析

在 Python 中,包是组织多个相关模块的一种方式。通过将多个模块组织在一起,包可以提供一个包含子目录的目录树结构,使得模块可以在其中按逻辑分组。这不仅有助于管理大型软件项目中的文件,也有助于避免命名冲突,因为包名作为前缀可以为模块名提供独特的命名空间。

一个包至少需要包含一个特殊的文件 __init__.py,这个文件可以是空的,也可以包含初始化代码 ,用于设置包的工作环境。当导入包时 ,Python 解释器会执行 __init__.py 文件中的代码。此外,包还可以包含其他 Python 模块或子包。

3 库的定义与作用

在 Python 中,库(Library)是指一组预先编写好的函数和类的集合 ,这些函数和类可以完成特定的任务。库通常由多个模块组成(是一个封装了许多模块的一个更上层的目录),这些模块可能位于同一个包内或者分布在不同的包中。库的目的是为了简化开发过程,使得开发者不需要从头开始编写所有的功能代码,而是可以通过导入库中的模块来使用已经实现的功能。

库分为内置库和第三方库。内置库是 Python 安装时自带的一部分,提供了许多常用功能的支持,比如文件操作、网络通信、日期处理等。第三方库则是由社区贡献的,可以通过 Python Package Index (PyPI) 获取并安装到项目中。第三方库极大地扩展了 Python 的能力边界,涵盖了从科学计算到 Web 开发等众多领域。

4 区分三者

库可以看作是比包更上层的封装,也算是一个目录结构.

模块则是一个python文件

5 实例

考虑一个简单的场景,我们要创建一个包含两个数学功能的小型应用程序。我们可以将其组织为一个包 ,包内包含几个模块 ,每个模块负责一部分功能。

__init__.py

addition.py

multiplication.py

main_scipt

这里 math_tool 是一个包 ,而 additionmultiplication 则是模块。包是组织模块的容器 ,而模块则是包含具体功能的独立单元。main_scipt是主函数.

执行main_scipt后,输出结果:

以上是个人理解总结的概念,如有错误,请批评指正!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2153893.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GB28181协议接入SVMSPro平台

国标28181协议接入SVMSPro平台 步骤一:海康摄像机28181配置;登录海康摄像机网页进配置选项,左边选网络-高级设置-平台接入-类型选28181 勾选启用,28181协议版本选最新2016 SIP服务器ID:默认20位 34020000002000000001,也可在服务端…

Linux系统网络诊断工具MTR使用方法

我们一般做linux系统服务器测评的时候,基本都会进行网速方面的测试,这方面的脚本工具啥的有很多,其中MTR是Linux平台上一款非常好用的网络诊断工具,集成了traceroute、ping、nslookup的功能,用于诊断网络状态非常有用。…

胤娲科技:谷歌DeepMind祭出蛋白质设计新AI——癌症治疗迎来曙光

在科技的浩瀚星空中,DeepMind的“阿尔法”家族总是能带来令人瞩目的璀璨光芒。这一次,它们再次以惊人的姿态, 将AI的触角深入到了生命的微观世界——蛋白质设计领域,为我们描绘了一幅未来医疗的宏伟蓝图。 想象一下,一…

思通数科开源产品:免费的AI视频监控卫士安装指南

准备运行环境: 确保您的服务器或计算机安装了Ubuntu 18.04 LTS操作系统。 按照产品要求,安装以下软件: - Python 3.9 - Java JDK 1.8 - MySQL 5.5 - Redis 2.7 - Elasticsearch 8.14 - FFmpeg 4.1.1 - RabbitMQ 3.13.2 - Minio (…

网络丢包定位记录(三)

网络IP层丢包 接口ip地址配置丢包 1. 本机服务不通,检查lo接口有没有配置地址是127.0.0.1; 2 .本机接收失败, 查看local路由表:ip r show table local|grep 子机ip地址;这种丢包一般会出现在多IP场景,子…

robomimic应用教程(一)——模型训练

Robomimic使用集中式配置系统来指定所有级别的(超)参数 本文介绍了配置(推荐)和启动训练运行的两种方法 目录 一、使用config json(推荐) 二、在代码中构造一个配置对象 三、查看运行结果 1. 实验结果会存在一个固定文件夹中…

S-Clustr-Simple 飞机大战:骇入现实的建筑灯光游戏

项目地址:https://github.com/MartinxMax/S-Clustr/releases Video https://www.youtube.com/watch?vr3JIZY1olro 飞机大战 这是一个影子集群的游戏插件,可以将游戏画面映射到现实的设备,允许恶意控制来完成游戏。亦或者设备部署在某建筑物中,来控制…

超实用的 Typora 插件

🌼📚Typora 是一款高效、易用且跨平台的 Markdown 编辑器和阅读器,其具有小巧、快速、实时预览等特点,非常受大家的欢迎。今天给大家推荐一款如虎添翼的 Typora 插件(Typora Plugin),它可以通过插件增强 Typora 的功能…

C++入门(03)萌新问题多(二)

文章目录 1. VS2022 控制台输出中文时,变成了一堆“?”1.1 字体、语言设置1.2 在程序中指定控制台编码1.3 修改注册表(只能说试试吧) 1. VS2022 控制台输出中文时,变成了一堆“?” 问题如下,Vi…

解决uniapp开发的app,手机预览,上下滑动页面,页面出现拉伸,抖动的效果问题,

在pages.json文件里“globalStyle”下面的"app-plus"里加入"bounce": "none"即可 "app-plus": { "bounce": "none", //关闭窗口回弹效果 }

[Leetcode] 227.基本计算器

标题:[Leetcode] 227.基本计算器 个人主页:水墨不写bug (图片来源于网络) // _ooOoo_ // // o8888888o // // …

linux 获取指定端口的PID netsat awk

使用netstat -ntpl 获取指定端口的PID #获取端口19000对应的PID netstat -ntpl | grep 19000 | awk {print $NF} | awk -F/ {print $1}

vcs/verdi常用命令(持续更新)

1. 操作rtl 1.1 加载rtl命令 verdi -dbdir simv.daidir的目录 1.2 显示某时刻rtl的值 首先鼠标左键在波形上选中某个特定时刻,然后鼠标选中rtl代码文件,按x就会显示,再按x就会退出显示。 1.3 查找字符串 按/ 1.4 vcs将rtl的信号加载到…

mockito+junit搞定单元测试(2h)

一,简介 1.1 单元测试的特点 配合断言使用(杜绝 System.out )可重复执行不依赖环境不会对数据产生影响spring 的上下文环境不是必须的一般都需要配合 mock 类框架来实现 1.2 mock 类框架使用场景 要进行测试的方法存在外部依赖(如 db, redis, 第三方接口调用等)…

HashMap扩容时机是插入前还是插入后?

结论 不管是HashMap还是ConcurrentHashMap都是插入后。 过程为: 先计算哈希值。对应的哈希槽插入数据,决定是红黑树还是链表插入完毕才计算是否需要扩容,假如需要则扩容 源码 源码如下: 其中addCount方法里面写入扩容。

如何设置 Django 错误邮件通知 ?

Django 是一个强大的 web 框架,非常适合那些想要完美快速完成任务的人。它有许多内置的工具和特性,一个有用的特性是 Django 可以在出现错误时发送电子邮件提醒。这对开发人员和管理员非常有用,因为如果出现问题,他们会立即得到通…

STM32F407单片机编程入门(十二) FreeRTOS实时操作系统详解及实战含源码

文章目录 一.概要二.什么是实时操作系统三.FreeRTOS的特性四.FreeRTOS的任务详解1.任务函数定义2.任务的创建3.任务的调度原理 五.CubeMX配置一个FreeRTOS例程1.硬件准备2.创建工程3.调试FreeRTOS任务调度 六.CubeMX工程源代码下载七.小结 一.概要 FreeRTOS是一个迷你的实时操…

智慧校园建设解决方案建设系统简介

一、建设背景 1.1 政策背景 1.2 班牌的演变 1.3 建设愿景 二、 智慧班牌简介 三、智慧班牌系统 3.1 系统概述 3.2 软件平台功能交互简介 3.2.1 智慧班牌与管理平台间的功能关联 3.2.2 手机客户端(管理员、教师、家长端) 3.2.3 手机客户端&#x…

数据采集与预处理,前后端结合案例(有代码),Python连接MySQL,对MySQL的增删改查

Python对MySQL的增删改查 通过Python连接MySQL """连接MySQL数据库,并进行增删改查,同时查询了MySQL版本号,并做了动态注册的账号,实现过程:先向userinfo当中添加account、password新字段&#xff0c…

数据结构:内部排序

文章目录 1. 前言1.1 什么是排序?1.2 排序的稳定性1.3 排序的分类和比较 2. 常见的排序算法3. 实现常见的排序算法3.1 直接插入排序3.2 希尔排序3.3 直接选择排序3.4 堆排序3.5 冒泡排序3.6 快速排序3.6.1 hoare思想3.6.2 挖坑法3.6.3 lomuto前后指针法3.6.4 非递归…