[Python物联网]Python基础知识和语法--Python模块和包--Python快速上手开发物联网上位机程序

news/2024/10/18 9:26:06/

目录

一、前言

二、模块的导入

三、模块的定义

四、包的定义

五、包的相对导入

六、示例代码

七、总结


一、前言

        在 Python 中,模块是指一个包含 Python 代码的文件。而包则是指一个包含多个模块的目录。模块和包是 Python 代码复用的基本组织方式。在本文中,我们将介绍 Python 模块和包的基础知识和使用方法。

        在物联网上位机程序的开发中,我们不免要运用到由开发者提供给我们的第三方模块或者开发包来帮助我们去除繁琐的工作,更快的实现功能。

二、模块的导入

        在 Python 中,我们可以通过'import' 语句来导入模块。以下是一些常见的导入模块的方式:

import math
import random as rand
from datetime import datetime

        上述代码中,第一个语句导入了 Python 的标准模块 'math';第二个语句将 'random' 模块导入,并给它取了一个别名 'rand';第三个语句从 'datetime' 模块中导入了 'datetime' 类

三、模块的定义

        我们也可以自己编写模块。一个简单的 Python 模块由一个包含 Python 代码的文件组成,该文件的扩展名为 '.py'。下面是一个示例模块 'mymodule.py' 的代码:

# mymodule.pydef greeting(name):print(f"Hello, {name}!")def add(x, y):return x + y

        我们可以通过 'import' 语句导入该模块,并调用其中的函数:

import mymodulemymodule.greeting("Alice")    # 输出:Hello, Alice!
print(mymodule.add(1, 2))    # 输出:3

四、包的定义

        包是一个包含多个模块的目录。一个简单的 Python 包由一个包含 '__init__.py' 文件的目录和多个 '.py' 模块文件组成。其中,'__init__.py' 文件可以为空文件,也可以包含初始化包的代码。以下是一个示例包 'mypackage' 的目录结构:

mypackage/
├── __init__.py
├── module1.py
└── module2.py

        其中,'module1.py' 和 'module2.py' 分别是两个模块。我们可以通过 'import' 语句导入包和模块

import mypackage
from mypackage import module1, module2module1.foo()
module2.bar()

        需要注意的是,在导入包时,Python 解释器会先查找该包中的 '__init__.py' 文件,并执行其中的代码,然后再导入需要的模块

五、包的相对导入

        在一个包中,我们可以使用相对导入来导入同一包中的模块。例如,在 'mypackage' 包中的 'module1.py' 中,我们可以通过以下语句导入 'module2.py':

from . import module2

        上述语句中,'.'表示当前包。也可以使用双点号 '..' 来表示上一级包。例如在 'mypackage' 包中的 'module1.py' 中,我们可以通过以下语句导入 'mypackage' 包中的 'module2.py':

from .. import module2

        上述语句中,双点号表示上一级包。需要注意的是,相对导入只能在包内部使用

六、示例代码

        下面是一个完整的示例代码,关于如何编写 Python 模块和包:

# mymodule.pydef greeting(name):print(f"Hello, {name}!")def add(x, y):return x + y
# mypackage/__init__.pyprint("Initializing mypackage...")from . import module1
from . import module2
# mypackage/module1.pydef foo():print("This is module1.")
# mypackage/module2.pydef bar():print("This is module2.")
# main.pyimport mymodule
import mypackage
from mypackage import module1, module2mymodule.greeting("Alice")    # 输出:Hello, Alice!
print(mymodule.add(1, 2))    # 输出:3module1.foo()    # 输出:This is module1.
module2.bar()    # 输出:This is module2.

        运行 'main.py',输出如下:

Initializing mypackage...
Hello, Alice!
3
This is module1.
This is module2.

七、总结

        Python 模块和包是 Python 代码复用的基本组织方式。通过导入模块和包,我们可以重用代码,提高代码的可维护性和可重用性。同时,我们也可以编写自己的模块和包,以便在项目中复用代码。在编写 Python 模块和包时,需要注意相对导入的使用方法,以及 '__init__.py' 文件的作用。


http://www.ppmy.cn/news/69785.html

相关文章

说说谷歌Chrome浏览器无痕浏览器窗口

当您启用无痕浏览后,设备的其他用户将不会看到您的历史记录。 Chrome 不会保存您的浏览记录或您在表单中填写的信息。当您浏览时,Chrome 会记住相应的 Cookie 和网站数据,但当您退出无痕模式时,Chrome 会删除这些数据。您可在打开…

Redis进阶

主要内容 Redis持久化Redis主从Redis哨兵Redis分片集群 Redis持久化 Redis有两种持久化的方案: RDB持久化AOF持久化 1. RDB持久化 RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所…

Android Framework——Binder 监控方案

作者:低性能JsonCodec 在 Android 应用开发中,Binder 可以说是使用最为普遍的 IPC 机制了。我们考虑监控 Binder 这一 IPC 机制,一般是出于以下两个目的: 卡顿优化:IPC 流程完整链路较长,且依赖于其他进程…

【Linux系统】Linux进程信号详解

Linux进程信号 0 引言1 认识信号1.1 什么是信号1.2 发送信号的本质1.3 信号的处理 2 信号的产生2.1 键盘产生2.2 调用系统函数向进程发送信号2.3 由软件条件产生信号2.4 硬件异常产生信号 3 信号的保存4 信号的处理5 总结 0 引言 本篇文章会从Linux信号的产生到信号的保存&…

信息熵、交叉熵、KL散度公式的简单理解

整理:我不爱机器学习 1 信息量 信息量是对信息的度量,就跟时间的度量是秒一样,考虑一个离散的随机变量 x 的时候,当观察到的这个变量的一个具体值的时候,我们接收到了多少信息呢? 例如听到太阳从东方升起…

免费优质的网页设计素材网站推荐

找到一个免费优质的网页设计素材网站并不容易。 有些网站要么需要网站的会员,要么设计素材质量差。本文整理总结了10个免费的网页设计材料网站,希望给大家带来一些帮助。 即时设计资源社区 即时设计资源社区是由在线协同设计软件即时设计推出的设计社…

【C++】函数高级

目录 🍊一.函数的默认参数🍊 1.默认参数的性质 2.函数默认参数的注意事项 🍎二.函数的占位参数🍎 🍏三.函数的重载 🍏 1.重载的性质和条件 (1)修改参数的个数 &#xff…

Open JDK下载

1. 序言 按照公司内部对JDK的认知,Oracle JDK 8能使用版本为jdk1.8.0_192,高版本的JDK将涉及商业问题,需要使用Open JDK最近工作中需要使用JDK 17.0.4 or higher,因此考虑需要下载Open JDK 17本文将以Open JDK 17为例&#xff0c…