Python 入门教程(8)模块 | 8.1、什么是包与模块?

文章目录

  • 一、什么是包与模块?
    • 1、模块
      • 1.1、定义
      • 1.2、创建模块
      • 1.3、使用模块
    • 2、包
      • 2.1、定义
      • 2.2、创建包
      • 2.3、使用包

前言:

在Python编程中,随着项目规模的扩大,代码的组织和管理变得尤为重要。Python提供了包(Package)和模块(Module)这两种基本结构,以帮助开发者高效地组织代码,提高代码的可读性、可维护性和重用性。

一、什么是包与模块?

1、模块

1.1、定义

模块是Python代码的基本组织单元,通常是一个包含Python代码的文件,文件名就是模块名。模块允许你将相关的函数、类和变量组织在一起,并通过import语句在其他Python文件中使用。这不仅有助于代码重用,还使得代码更加模块化,易于维护。

1.2、创建模块

创建一个模块非常简单,只需编写一个.py文件即可。例如,创建一个名为math_operations.py的模块,其中包含一些基本的数学运算函数:

# math_operations.py  def add(a, b):  return a + b  def subtract(a, b):  return a - b  

1.3、使用模块

在其他Python文件中,可以通过import语句来导入并使用这个模块中的函数:

# main.py  import math_operations  result_add = math_operations.add(10, 5)  
result_subtract = math_operations.subtract(10, 5)  print(f"Addition: {result_add}")  
print(f"Subtraction: {result_subtract}")

可以使用from ... import ...语句来导入模块中的特定函数,以避免在每次调用时都需要指定模块名:

# main.py  from math_operations import add, subtract  result_add = add(10, 5)  
result_subtract = subtract(10, 5)  print(f"Addition: {result_add}")  
print(f"Subtraction: {result_subtract}")

2、包

2.1、定义

包是包含多个模块的目录,用于进一步组织和管理复杂的Python项目。包目录必须包含一个名为__init__.py的文件(该文件可以为空),该文件的存在表明该目录是一个Python包。包可以包含子包,每个包或子包都可以有自己的模块,形成层次结构。

2.2、创建包

假设要创建一个名为my_package的包,该包包含两个模块:math_operations.pystring_operations.py。目录结构如下:

my_package/  __init__.py  math_operations.py  string_operations.py

其中,math_operations.py的内容与之前相同,string_operations.py可以包含一些字符串操作函数:

# string_operations.py  def concatenate(str1, str2):  return str1 + str2  def capitalize(string):  return string.capitalize()

2.3、使用包

在使用包中的模块时,需要指定包的名称作为前缀。例如:

# main.py  from my_package import math_operations, string_operations  result_add = math_operations.add(10, 5)  
concatenated_string = string_operations.concatenate("Hello", "World")  print(f"Addition: {result_add}")  
print(f"Concatenated String: {concatenated_string}")

如果__init__.py文件中包含代码,那么这些代码将在包的模块被导入时执行。此外,你还可以利用__init__.py来导出包中模块的特定部分,使得导入更加简洁。

通过合理地使用Python的包和模块,你可以构建出结构清晰、易于维护的Python项目,提高开发效率和代码质量。

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

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

相关文章

JUC高并发编程10:线程池

1 线程池概述 1.1 线程池简介 线程池(Thread Pool)是一种线程使用模式。在多线程编程中,线程的创建和销毁会带来一定的开销,尤其是在处理大量短时间任务时,频繁的线程创建和销毁会导致调度开销增加,进而影…

Java 集合 Collection常考面试题

理解集合体系图 collection中 list 是有序的,set 是无序的 什么是迭代器 主要遍历 Collection 集合中的元素,所有实现了 Collection 的集合类都有一个iterator()方法,可以返回一个 iterator 的迭代器。 ArrayList 和 Vector 的区别? ArrayList 可以存放 null,底层是由数…

【算法】滑动窗口(续)

一、将x减到0的最小操作数 1658. 将 x 减到 0 的最小操作数 - 力扣(LeetCode) 给你一个整数数组 nums 和一个整数 x 。每一次操作时,你应当移除数组 nums 最左边或最右边的元素,然后从 x 中减去该元素的值。请注意,需要…

2024长城杯WP

WEB SQLUP 打开题目给了一个登录页面结合名字猜测为SQL注入 查看源码发现有hint提示开发者使用的是模式匹配 所以我尝试使用%来模糊匹配,登陆成功 usernameadmin&password% 进入面板之后发现有一个文件上传功能 尝试上传php文件,结果被waf&#xff0…

【银河麒麟高级服务器操作系统】安全配置基线相关分析全过程及解决方案

了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer.kylinos.cn 文档中心:https://documentkylinos.cn 服务器环境以及配置 【机型】物理机或虚机 【…

SpringBoot开发——整合Admin监控服务

文章目录 1、SpringBoot-Admin简介2、SpringBoot整合Admin监控服务2.1 创建SpringBoot-Admin项目(服务端)2.1.1 创建一个SpringBoot项目2.1.2 选择相关依赖2.1.3 启用Admin监控服务2.1.4 启用项目2.2 配置需要被监听的项目(客户端)2.2.1 被监听的项目添加相关依赖2.2.2 配置被…

Redis高级篇 —— 分布式缓存

Redis高级篇 —— 分布式缓存 文章目录 Redis高级篇 —— 分布式缓存1 Redis持久化1.1 RDB1.2 RDB的fork原理1.3 RDB总结1.4 AOF持久化1.5 RDB和AOF的对比 2 Redis主从2.1 搭建主从架构2.2 数据同步原理2.2.1 全量同步2.2.2 增量同步 3 Redis哨兵3.1 哨兵的作用和原理3.1.1 哨兵…

kafka和zookeeper单机部署

安装kafka需要jdk和zookeeper环境,因此先部署单机zk的测试环境。 zookeeper离线安装 下载地址: zookeeper下载地址:Index of /dist/zookeeper 这里下载安装 zookeeper-3.4.6.tar.gz 版本,测试环境单机部署 上传服务器后解压缩 …

Python酷库之旅-第三方库Pandas(142)

目录 一、用法精讲 641、pandas.Timestamp.hour属性 641-1、语法 641-2、参数 641-3、功能 641-4、返回值 641-5、说明 641-6、用法 641-6-1、数据准备 641-6-2、代码示例 641-6-3、结果输出 642、pandas.Timestamp.is_leap_year属性 642-1、语法 642-2、参数 6…

使用Python编写你的第一个算法交易程序

背景 Background ​ 最近想学习一下量化金融,总算在盈透投资者教育(IBKRCampus)板块找到一篇比较好的算法交易入门教程。我在记录实践过程后,翻译成中文写成此csdn博客,分享给大家。 ​ 如果你的英语好可以直接看原文…

用FPGA做一个全画幅无反相机

做一个 FPGA 驱动的全画幅无反光镜数码相机是不是觉得很酷? 就是上图这样。 Sitina 一款开源 35 毫米全画幅 (3624 毫米) CCD 无反光镜可换镜头相机 (MILC),这个项目最初的目标是打造一款数码相机,将 SLR [单镜头反光] 相机转换为 DSLR [数码…

SpringBoot 集成 Redis

一:SpringBoot 集成 Redis ①Redis是一个 NoSQL(not only)数据库, 常作用缓存 Cache 使用。 ②Redis是一个中间件、是一个独立的服务器;常用的数据类型: string , hash ,set ,zset , list ③通过Redis客…

初阶C语言-结构体

一.结构体的声明 1.结构体类型的声明 1.1结构的基础知识 结构是一些值的集合,这些值称为称为变量。结构的每个成员可以是不同类型的变量。 1.2结构的声明 struct tag //struct是结构体关键字,tag是结构体类型名称 { member - list;//成员变…

D26【python 接口自动化学习】- python 基础之判断与循环

day26 语句嵌套 学习日期:20241003 学习目标:判断与循环﹣-36 语句嵌套:如何处理多重嵌套的问题? 学习笔记: 语句嵌套的用途 在条件语句中使用另外一个条件语句 在循环中使用条件语句 多重循环 总结 1…

linux查看k8s的开机启动状态 systemctl is-enabled 查看开机启动状态

查看k8s的开机启动状态 在Kubernetes中,通常使用systemd来管理服务的启动。但是,Kubernetes节点上的服务可能不是由systemd直接管理,而是通过kubelet服务来管理。因此,检查Kubernetes节点的开机启动状态,你需要检查ku…

Unity网络开发 - C#开源网络通信库PESocket的使用

概述 在现代多人在线游戏中,稳定且高效的网络通信是确保游戏体验的关键。本文将探讨如何利用C#开源网络通信库PESocket来构建一个简单的Unity客户端与.NET控制台服务器之间的实时消息传递系统。通过本例,读者不仅能够了解PESocket的基本用法&#xff0c…

稀土抗紫外屏蔽剂的用途

稀土抗紫外屏蔽剂具有光、热稳定性好,可高效吸收/有效屏蔽280-400nm范围内的紫外线,无二次氧化过程的缺点,彻底解决产品因紫外线原因造成的变质和老化问题,并且具有添加量小、无毒、不易析出等优点。 稀土抗紫外屏蔽剂的用途只要有…

安全网络架构

网络安全解决方案是指通过一系列技术和措施来保护网络系统和数据的安全。它涉及多个方面,包括网络设备的防护、数据的加密和备份、安全策略的制定和执行等。以下是一些常见的网络安全解决方案: 防火墙:防火墙是一种硬件或软件设备&#xff0c…

qt+opengl 实现纹理贴图,平移旋转,绘制三角形,方形

1 首先qt 已经封装了opengl,那么我们就可以直接用了,这里面有三个函数需要继承 virtual void initializeGL() override; virtual void resizeGL(int w,int h) override; virtual void paintGL() override; 这三个函数是实现opengl的重要函数。 2 我们…

Leetcode 买卖股票的最佳时机

这段代码的目的是解决“买卖股票的最佳时机”这个问题,即在给定的股票价格数组中,找到一次买入和卖出所能获得的最大利润。 算法思想: 定义两个变量: minPrice: 这个变量用于记录迄今为止遇到的最小股票价格(买入价格…