06. Python模块

目录

1、前言

2、什么是模块

3、Python标准库模块

3.1、os模块

3.2、datetime 模块

3.3、random模块

4、自定义模块

4.1、创建和使用

4.2、模块命名空间

4.3、作用域

5、安装第三方依赖

5.1、使用 pip 安装单个依赖

5.2、从 requirements.txt 安装依赖

5.3、安装指定版本的依赖

5.4、从版本库安装依赖

6、from...import...as

7、小结


1、前言

Python 的强大之处之一就是其模块化编程的支持。模块是代码的组织单元,它允许你将代码划分为可重用的部分,从而提高代码的可维护性和可扩展性。今天我们一起来探讨 Python 模块的概念、创建和使用方法,以及一些常见的 Python 标准库模块。

2、什么是模块

为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Module)。

模块是包含 Python 代码的文件,它可以包括变量、函数和类。通过将代码组织成模块,我们可以更好地组织代码、提高可重用性,并支持更好的命名空间管理。使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突。

此外,Python为了避免模块名冲突,引入了按目录来组织模块的方法,称为包(Package)。如:

其中,first_demo.py,main.py就是一个名字分别叫做first_demo和main的模块。而first_demo存在模块冲突了,于是我们通过first包(Package)来组织,避免冲突。

3、Python标准库模块

Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用。如os模块、datetime模块、random模块等。使用内置模块我们只需要使用import导入该模块,然后就有了以模块名称为变量名的变量引用该模块,使用该变量就可以访问模块里的所有功能。

3.1、os模块

os 模块提供了与操作系统交互的功能,包括文件和目录操作、环境变量等。

import osif __name__ == '__main__':""" 返回当前的工作目录 """ """ Return a unicode string representing the current working directory. """print(os.getcwd())  

3.2、datetime 模块

datetime 模块用于处理日期和时间,提供了丰富的功能,如日期的格式化、时间的计算等。

from datetime import datetime if __name__ == '__main__':now_time = datetime.now()print("当前时间:", now_time)

3.3、random模块

random 模块用于生成伪随机数,提供了多种随机数生成函数。

import randomif __name__ == '__main__':for i in range(10):  # 打印10次print(random.randint(1, 100))

4、自定义模块

除了使用Python标准库中的模块以外,我们还可以按需定义自己的模块。这种方式在团队协作开发模式中非常有用。

4.1、创建和使用

创建模块非常简单,只需将相关代码保存在一个文件中,并使用 import 关键字在其他地方引入它。

定义一个my_module.py模块,里面定义了一个接收名称的函数,同时返回hello, xxx。

# 定义了一个sqy_hello函数,用于外部调用
def say_hello(name):return f"Hello, {name}!"

使用该模块:

# 使用import关键字引入该模块
import my_moduleif __name__ == '__main__':# 调用该模块print(my_module.say_hello("张三"))

4.2、模块命名空间

模块创建了一个独立的命名空间,可以使用模块名来访问其中的变量和函数,从而避免命名冲突。如在my_module.py模块中定义一个变量,我们在引用该模块的函数中可以调用该变量,而不与自己模块冲突。如:

COUNTRY = "中国"# 定义了一个sqy_hello函数,用于外部调用
def say_hello(name):return f"Hello, {name}!"

调用:

import my_moduleCOUNTRY = "中国111"if __name__ == '__main__':print(my_module.say_hello("张三"), my_module.COUNTRY, "你好")

4.3、作用域

模块的作用域是指在模块中定义的变量、函数和类的可见性和访问范围。

在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。而在Python中,是通过_前缀来实现的。正常的函数和变量名是公开的(public),可以被直接引用,比如:abc,x123,PI等。

类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的__author__,__name__就是特殊变量,hello模块定义的文档注释也可以用特殊变量__doc__访问,我们自己的变量一般不要用这种变量名。

类似_xxx和__xxx这样的函数或变量就是非公开的(private),表示这个函数是“内部实现细节”或“私有”的,不应该被直接引用或调用。这是一种命名约定,告诉其他程序员,这个函数是模块内部使用的,不属于模块的公共接口。

def _internal_function():print("This is an internal function.")def public_function():print("This is a public function.")

其中_internal_function 被认为是模块内部使用的,而 public_function 是模块的公共接口。

5、安装第三方依赖

除了Python自带的模块,自己定义的模块以外,通常还会使用别人定义好的第三方依赖。使用这些依赖,由于不在我们的Python库中,因此需要先进行安装。

5.1、使用 pip 安装单个依赖

在Python中,安装第三方模块,是通过包管理工具pip完成的。

pip install package_name

例如安装requests依赖:

pip install requests

5.2、从 requirements.txt 安装依赖

通常,在项目中会有一个名为 requirements.txt 的文件,其中列出了项目所需的所有依赖。你可以使用以下命令一次性安装所有依赖:

pip install -r requirements.txt

5.3、安装指定版本的依赖

如果你需要安装特定版本的依赖,可以使用 == 符号:

pip install package_name==1.2.3
# 指定安装最新版本
pip install --upgrade package_name

5.4、从版本库安装依赖

有时你可能需要从版本库(例如 GitHub)直接安装依赖。可以使用以下命令:

pip install git+https://github.com/username/repo.git

6、from...import...as

使用import引入模块时,引用模块的变量名默认为模块名。有时候如果模块名太长,我们可以通过as关键字,进行变量名重定义。如:

import my_module as mm  # 定义变量名为mmif __name__ == '__main__':# 这里通过重定义的变量名mm访问模块功能print(mm.say_hello("张三"))

from ... import ... 是一种导入模块中特定成员(变量、函数、类等)的语法。这种方式允许你直接从模块中导入你需要的部分,而不是整个模块。如:

""" 
这里只导入了math模块中的sqrt函数
如果要导入多个函数,使用英文逗号,隔开即可 
如果需要引入全部模块,import后面跟上*号即可,这种方式不是推荐的做法,因为它可能导致命名冲突和代码不易读。
"""
from math import sqrtresult = sqrt(25)
print(result)

7、小结

Python 模块是模块化编程的基础,能够帮助我们更好地组织和管理代码。通过合理使用模块,我们可以提高代码的可读性、可维护性,并能够更容易地共享和重用代码。掌握模块的基本概念和高级用法,是成为 Python 高效开发者的重要一步。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20231218给Firefly的AIO-3399J【RK3399】开发板刷Android12挖掘机方案

20231218给Firefly的AIO-3399J【RK3399】开发板刷Android12挖掘机方案 2023/12/18 21:07 一、整体编译Rockchip的的Android12的挖掘机方案! 由于RK3399的Android12系统默认是IND工业方案,需要修改一下【为挖掘机方案】。 Z:\3TB\81rk_android12_220722\…

三菱plc学习入门(一,认识三菱plc)

今天就开始对三菱的plc软件入一个门,希望小编的文章对读者和初学者有所帮助!欢迎评论指正,废话不多说,下面开始学习。 目录 plc的型号介绍 M表示什么? T表示什么? R表示什么? 为什么三菱没…

mysql函数(三)之常见数学函数

MySQL提供了很多常用的数学函数,常见的数学函数及使用如下: ABS(X):返回X的绝对值。 例子:SELECT ABS(-5); – 结果为5 效果图: CEIL(X):返回大于或等于X的最小整数值。 例子:SELECT CEIL(3.2…

MyBatis首次使用并查询数据库中表的数据

MyBatis首次使用并查询数据库中表的数据 1、传统Jdbc代码问题分析 public class JdbcTest {public static void main(String[] args) {try {//1.加载数据库驱动Class.forName("com.mysql.jdbc.Driver");//2.创建连接对象String url "jdbc:mysql://192.168.10…

MySQL下载、安装、配置详细教程

目录 1 下载 2 安装 2.1执行安装命令: 2.2 编写配置文件 2.3查看默认mysql的密码: 2.4启动mysql服务 2.5 登录mysql,修改密码 3 系统环境变量配置 3.1 配置 3.2 测试 1 下载 官方网址: https://www.mysql.com/跳转到如…

智慧农田三维可视化大屏,土壤检测,电磁阀控制,气象监测

个人主页: 左本Web3D,更多案例预览请点击》 在线案例 个人简介:专注Web3D使用ThreeJS实现3D效果技巧和学习案例 💕 💕积跬步以至千里,致敬每个爱学习的你。喜欢的话请三连,有问题请私信或者加微…

Rust语言抓取在线考试平台的专业试题数据

不管你是学车也好,还是考各类证书,都离不开刷题,有些题库都是需要收费的,而且市面平台那么多,想要刷更多的题只能下载很多不同APP,因此,我写了一个Rust爬取试题的爬虫,将更多的分散的…

k8s-ingress 8

ExternalName类型 当集群外的资源往集群内迁移时,地址并不稳定,访问域名或者访问方式等会产生变化; 使用svc的方式来做可以保证不会改变:内部直接访问svc;外部会在dns上加上解析,以确保访问到外部地址。 …

Eclipse 一直提示 loading descriptor for 的解决方法

启动eclipse之后,进行相关操作时,弹出界面,提示:loading descriptor for xxx 解决方法: 在Eclipse左侧的Project Explorer 最右上角有一个小钮,鼠标移上去时提示"View Menu". 你点一下,在弹出的上下文菜单中…

如何去“面试”软件测试工程师?

站在用人单位的角度问这个问题,但是相信很多人搜到这个问题,目的是为了知道如何准备面试,以便拿到软件测试工程师的Offfer(所以我会更多站在求职者的角度去解答这个问题)。 但我们要清楚,找工作是出卖服务…

【sqli靶场】第六关和第七关通关思路

目录 前言 一、sqli靶场第六关 1.1 判断注入类型 1.2 观察报错 1.3 使用extractvalue函数报错 1.4 爆出数据库中的表名 二、sqli靶场第七关 1.1 判断注入类型 1.2 判断数据表中的字段数 1.3 提示 1.4 构造poc爆库名 1.5 构造poc爆表名 1.6 构造poc爆字段名 1.7 构造poc获取账…

Nginx location+Nginx rewrite(重写)(新版)

Nginx locationNginx rewrite(重写) Nginx locationNginx rewrite(重写)一、location1、常用的Nginx 正则表达式2、location的类型3、location 的匹配规则4、location 优先级5、location 示例说明5.1只修改网页路径5.2修改nginx配置文件和网页路径5.3一般前缀5.4正则匹配5.5前缀…