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.mzph.cn/news/230990.shtml

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

相关文章

还在为学MyBatis发愁?史上最全,一篇文章带你学习MyBatis

文章目录 前言一、📖MyBatis简介1.Mybatis历史2.MyBatis特性3.对比(其他持久化层技术) 二、📣搭建MyBatis1.开发环境2.创建maven工程3.创建MyBatis核心配置文件4.创建mapper接口5.创建MyBatis的映射文件6.通过junit测试功能7.加入…

OpenCV4工业缺陷检测的六种方法

机器视觉 机器视觉是使用各种工业相机,结合传感器跟电气信号实现替代传统人工,完成对象识别、计数、测量、缺陷检测、引导定位与抓取等任务。其中工业品的缺陷检测极大的依赖人工完成,特别是传统的3C制造环节,产品缺陷检测依赖于人…

python+torch线性回归模型机器学习

程序示例精选 pythontorch线性回归模型机器学习 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《pythontorch线性回归模型机器学习》编写代码,代码整洁,规则&#xf…

USB2.0 Spec

USB System Description A USB system is described by three definitional areas: • USB interconnect • USB devices • USB host USB interconnect The USB interconnect is the manner in which USB devices are connected to and communicate with the host. USB Ho…

docker基本命令

1.docker命令图解 2. 从仓库拉取镜像 #下载最新版 docker pull nginx # 镜像名:版本名(标签) docker pull nginx:1.20.1docker rmi 镜像名:版本号/镜像id3. 容器启动及停止 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] docker run [设置项] 镜…

R语言【rgbif】——occ_search对待字符长度大于1500的WKT的特殊处理真的有必要吗?

一句话结论:只要有网有流量,直接用长WKT传递给参数【geometry】、参数【limit】配合参数【start】获取所有记录。 当我在阅读 【rgbif】 给出的用户手册时,注意到 【occ_search】 强调了 参数 【geometry】使用的wkt格式字符串长度。 文中如…

使用数组模拟栈的相关操作【栈1.1】

public class ArrayStackDemo {public static void main(String[] args) {ArrayStack arrayStack new ArrayStack(4);Scanner sc new Scanner(System.in);boolean loop true;char key ;while (loop) {System.out.println("栈操作菜单项");System.out.println(&q…

范仲淹仅存五首词作,篇篇经典

范仲淹,北宋时期杰出的政治家,文学家,提起他首先想到初中那篇《岳阳楼记》,难倒无数背诵困难户,它虽然难背,但却是一篇文字排列极美,意境极佳的美文。 “不以物喜,不以己悲&#xf…

Android hilt使用

一,添加依赖库 添加依赖库app build.gradle.kts implementation("com.google.dagger:hilt-android:2.49")annotationProcessor("com.google.dagger:hilt-android:2.49")annotationProcessor("com.google.dagger:hilt-compiler:2.49"…

程序人生,由“小作文”事件想到的

时势造英雄。自媒体时代,火出圈是靠大众的审美和爱好,自己能做的关键,其实是做好自己,选择向上生长,持续不断的读书、学习。同时保持一份好奇心,培养一个兴趣爱好并自得其乐。 展示自我 回想起我小时候&am…

Promise执行顺序

小编建议小伙伴们不要跳点看,每一点都是衔接,有比较的 本篇文章考查 ①promise是同步任务还是微任务 ②promise.then()什么时候执行,是微任务还是宏任务 ③如何控制状态变化,不同状态变化,会执行哪个回调函数 1、以下代…

进制之间的转换——n进制转换为m进制(C/C++实现,简单易懂)

目录 🌈前言: 📁 什么是进制转换: 📁其他进制转换成十进制: 📂二进制( B ) ——> 十进制( D ) 📂八进制( O ) ——> 十进制( D ) 📂十六进制( H ) ——> 十进制…

运维实践|采集MySQL数据出现many connection errors

文章目录 问题出现问题分析当前环境问题分析 解决方案1 检查调度事件任务是否开启2 开启调度事件任务3 创建一张日志表4 创建函数存储过程5 创建事件定时器6 开启事件调度任务7 检查核实是否创建 总结 问题出现 最近在做OGG结构化数据采集工作,在数据采集过程中&am…

抖音商品详情API接口在电商行业中的重要性及实时数据获取实现

随着移动互联网的快速发展,电商行业不断壮大。抖音作为一款短视频社交应用,近年来在电商领域取得了显著成果。本文将探讨抖音商品详情API接口在电商行业中的重要性,以及如何通过实时数据获取提高业务效率。我们将介绍相关的技术背景、API接口…

AngularJS

理解实现代码的逻辑为主要,代码怎么写为次要。 参考资料: 《AngularJS入门与进阶》,江荣波著 前端开发常用框架 React:由Facebook开发,用于构建用户界面的JavaScript库,以组件化和虚拟DOM著称。 Angular&…

2024最新FL Studio21.2MAC电脑版中文版下载安装步骤教程

FL Studio 简称FL,全称Fruity Loops Studio,因此国人习惯叫它"水果"。目前最新版本是FL Studio21.1.1.3750版本,它让你的计算机就像是全功能的录音室,大混音盘,非常先进的制作工具,让你的音乐突破…

docker的资源限制及容器应用

一、docker资源限制 在使用 docker 运行容器时,一台主机上可能会运行几百个容器,这些容器虽然互相隔离,但是底层却使用着相同的 CPU、内存和磁盘资源。如果不对容器使用的资源进行限制,那么容器之间会互相影响,小的来说…

DC-5靶场

目录 DC-5靶机: 先进行主机发现: 发现文件包含: 上传一句话木马: 反弹shell: 提权漏洞利用: 下载exp: 第一个文件 libhax.c 第二个文件r…

电子电器架构( E/E) 演化 —— 大算力

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

PowerShell实战:Get-Content命令使用详解

目录 一、Get-Content介绍 二、语法格式 三、参数详解 四、使用案例 4.1 获取文件内容 4.2 获取文件前三行内容 4.3 获取文件最后三行内容 4.4通过管道方式获取最后两行内容 4.5使用逗号作为分隔符 4.6 Filter方式读取多个文件 4.7 Include方式读取多个文件 一、Get-Content介绍…