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.rhkb.cn/news/220176.html

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

相关文章

华为OS与麒麟OS:华为自研操作系统的对决

导言 在移动操作系统领域,华为OS和麒麟OS代表了华为在自主研发方面的努力。本文将深入探讨这两个操作系统的特点、竞争关系以及它们在用户体验、生态系统建设等方面的差异。 1. 背景与起源 华为OS的诞生: 华为OS是华为公司为应对外部环境而自主…

Redis设计与实现之订阅与发布

目录 一、 订阅与发布 1、 频道的订阅与信息发送 2、订阅频道 3、发送信息到频道 4、 退订频道 5、模式的订阅与信息发送 ​编辑 6、 订阅模式 7、 发送信息到模式 8、 退订模式 三、订阅消息断连 1、如果订阅者断开连接了,再次连接会不会丢失之前发布的消…

【无标题】CTF之SQLMAP

拿这一题来说 抓个包 复制报文 启动我们的sqlmap kali里边 sqlmap -r 文件路径 --dump --dbs 数据库 --tables 表

HTML中边框样式、内外边距、盒子模型尺寸计算(附代码图文示例)【详解】

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍HTML中边框样式、内外边距、盒子模型尺寸计算以及部分理论知识 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主收将持续更新学习记录获,友友们有任何问…

网络编程『socket套接字 ‖ 简易UDP网络程序』

🔭个人主页: 北 海 🛜所属专栏: Linux学习之旅、神奇的网络世界 💻操作环境: CentOS 7.6 阿里云远程服务器 文章目录 🌤️前言🌦️正文1.预备知识1.1.IP地址1.2.端口号1.3.端口号与进…

详细教程 - 从零开发 Vue 鸿蒙harmonyOS应用 第五节 (基于uni-app封装鸿蒙接口请求库)

随着鸿蒙系统的兴起,越来越多的app会采用鸿蒙开发。而鸿蒙开发必不可少的就是调用各种接口服务。为了简化接口的调用流程,我们通常会做一层封装。今天就来讲解一下,如何用uni-app封装鸿蒙的接口请求库。 一、新建项目 首先我们要新建一个鸿蒙项目啦!当然选择第一个…

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

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

【node】 地址标准化 解析手机号、姓名、行政区

地址标准化 解析手机号、姓名、行政区 实现效果链接源码 实现效果 将东光县科技园南路444号马晓姐13243214321 解析为 东光县科技园南路444号 13243214321 河北省;沧州市;东光县;东光镇 马晓姐 console.log(address, phone, divisions,name);链接 API概览 源码 https://gi…

php hyperf 读取redis,存储到数据库

背景说明 小白:伟哥,java中的set是无序的,Redis中可以带顺序吗? 伟哥:可以, 不过不叫set了,叫zset。 概述 SortedSet又叫zset,它是Redis提供的特殊数据类型,是一种特殊…

php-使用wangeditor实现富文本(完成图片上传)-npm

官网参考连接:快速开始 | wangEditor 样式: 一、新建一个临时文件夹test1和一个文件夹wangeditor 临时文件夹test1:临时存放通过npm下载的文件文件夹wangeditor:用于存放在临时文件夹test1拷贝的css和js 二、安装 editor 在确保有…

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…

选择排序、快速排序和插入排序

1. 选择排序 xuanze_sort.c #include<stdio.h> #include<stdlib.h>//选择排序void xuanze_sort(int arr[],int sz){//正着for(int i0;i<sz;i){//外层循环从第一个数据开始依次作为基准数据for(int j i1;j<sz;j){//int j i1 因为第一个数据作为了基准数据&…

网络空间搜索引擎- FOFA的使用技巧总结

简介 FOFA是一款网络空间测绘的搜索引擎&#xff0c;旨在帮助用户以搜索的方式查找公网上的互联网资产。 FOFA的查询方式类似于谷歌或百度&#xff0c;用户可以输入关键词来匹配包含该关键词的数据。不同的是&#xff0c;这些数据不仅包括像谷歌或百度一样的网页&#xff0c;还…

详解 Jeecg-boot 框架如何配置 elasticsearch

目录 一、下载安装 Elasticsearch 1、 地址&#xff1a;https://www.elastic.co/cn/downloads/elasticsearch 2、下载完成后&#xff0c;解压缩&#xff0c;进入config目录更改配置文件 3、 修改配置完成后&#xff0c;前往bin目录启动el 4、访问&#xff1a;localhost:92…

【Proteus仿真】【51单片机】定时智能插座开关

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器&#xff0c;使LCD1602液晶&#xff0c;DS18B20温度传感器、按键、蜂鸣器、继电器开关、HC05蓝牙模块等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示…

钡铼无线R10A工业级路由器在工业机器人领域的创新应用

随着工业机器人的普及&#xff0c;对于高可靠性和高稳定性的网络接入设备的需求也越来越大。传统的有线网络虽然稳定&#xff0c;但在现场布置和维护上面临很多困难&#xff0c;而无线网络虽然方便&#xff0c;但受到信号干扰和传输距离限制等问题的影响。如何解决这些问题&…

【Docker】Docker安装部署maven私服

文章目录 镜像拉取构建nexus实例登录maven私服如何查看实例初始化的admin密码呢&#xff1f;1.查看容器挂载卷2.找到nexus_nexus_data查看挂载卷详情3.查看admin账号密码4.登录并重置密码 使用nexus私服1.设置settings.xml2.设置idea pom 出现的问题小插曲 镜像拉取 docker pu…

计算机网络:数据链路层(VLAN)

今天又学到一个知识&#xff0c;加油&#xff01; 目录 一、传统局域网的局限&#xff08;促进VLAN的诞生&#xff09; 二、VLAN简介 三、VLAN的实现 总结 一、传统局域网的局限&#xff08;促进VLAN的诞生&#xff09; 缺乏流量隔离:即使把组流量局域化道一个单一交换机中…

科技云报道:至简至强,新一代服务器的算力美学

科技云报道原创。 在这个时代&#xff0c;数据和计算的边界正在迅速扩张。 随着云计算、物联网和人工智能的日益成熟&#xff0c;对算力的需求已经突破了传统的限制&#xff0c;进入了一个全新的阶段。在这个阶段&#xff0c;不仅是算力的量级发生了变化&#xff0c;其性质和…