第8天:模块和包

学习目标

  • 理解Python模块和包的概念
  • 学习如何创建和导入模块
  • 掌握标准库模块的使用
  • 学习如何使用包组织代码
学习内容
1. 模块的概念

模块是一个包含Python代码的文件,模块可以包含函数、类和变量,也可以包含可执行的代码。模块使你能够组织和重用代码。

创建模块

创建一个名为 mymodule.py 的文件:

# mymodule.pydef greet(name):return f"Hello, {name}!"PI = 3.14159
 
导入模块

使用 import 语句导入模块:

import mymoduleprint(mymodule.greet("Alice"))  # 输出: Hello, Alice!
print(mymodule.PI)  # 输出: 3.14159

使用 from ... import 语句导入模块的特定部分:

from mymodule import greet, PIprint(greet("Bob"))  # 输出: Hello, Bob!
print(PI)  # 输出: 3.14159
2. 标准库模块

Python标准库包含许多有用的模块,可以直接导入使用。以下是一些常用模块的示例:

math 模块
import mathprint(math.sqrt(16))  # 输出: 4.0
print(math.pi)  # 输出: 3.141592653589793
datetime 模块
import datetimenow = datetime.datetime.now()
print(now)  # 输出: 当前日期和时间
os 模块
import osprint(os.getcwd())  # 输出: 当前工作目录
print(os.listdir('.'))  # 输出: 当前目录下的文件和文件夹
3. 包的概念

包是一个包含多个模块的目录。包通过在目录中包含一个名为 __init__.py 的特殊文件来创建。

创建包

创建一个包结构如下:

mypackage/__init__.pymodule1.pymodule2.py

module1.py 中定义一些函数和变量:

# mypackage/module1.pydef func1():return "Function 1"var1 = "Variable 1"

module2.py 中定义一些函数和变量:

# mypackage/module2.pydef func2():return "Function 2"var2 = "Variable 2"
导入包

使用 import 语句导入包:

import mypackage.module1
import mypackage.module2print(mypackage.module1.func1())  # 输出: Function 1
print(mypackage.module2.func2())  # 输出: Function 2

使用 from ... import 语句导入包的特定部分:

from mypackage.module1 import func1, var1
from mypackage.module2 import func2, var2print(func1())  # 输出: Function 1
print(var1)  # 输出: Variable 1
print(func2())  # 输出: Function 2
print(var2)  # 输出: Variable 2
今日任务
  1. 创建并使用模块:

    • 创建一个名为 math_operations.py 的模块,定义一些数学运算函数(如加法、减法、乘法和除法)。
# math_operations.pydef add(a, b):return a + bdef subtract(a, b):return a - bdef multiply(a, b):return a * bdef divide(a, b):if b != 0:return a / belse:return "Division by zero is undefined"
    • 创建一个Python脚本,导入 math_operations 模块并调用这些函数。
# math_operations.pydef add(a, b):return a + bdef subtract(a, b):return a - bdef multiply(a, b):return a * bdef divide(a, b):if b != 0:return a / belse:return "Division by zero is undefined"
  1. 使用标准库模块:

    • 编写代码,使用 math 模块计算一个数的平方根和圆的面积。
# math_example.pyimport mathnumber = 16
radius = 5sqrt_value = math.sqrt(number)
circle_area = math.pi * radius ** 2print(f"The square root of {number} is {sqrt_value}")  # 输出: The square root of 16 is 4.0
print(f"The area of the circle with radius {radius} is {circle_area}")  # 输出: The area of the circle with radius 5 is 78.53981633974483
    • 编写代码,使用 datetime 模块获取当前日期和时间,并格式化输出。
# datetime_example.pyimport datetimenow = datetime.datetime.now()formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")print(f"Current date and time: {formatted_date}")  # 输出: Current date and time: 2024-07-01 10:00:00
    • 编写代码,使用 os 模块获取当前工作目录并列出当前目录下的文件和文件夹。
# os_example.pyimport oscurrent_directory = os.getcwd()
files_and_folders = os.listdir('.')print(f"Current working directory: {current_directory}")  # 输出当前工作目录
print("Files and folders in the current directory:")
for item in files_and_folders:print(item)
  1. 创建并使用包:

    • 创建一个名为 utilities 的包,其中包含两个模块:string_utils.pyfile_utils.py
utilities/__init__.pystring_utils.pyfile_utils.py
    • string_utils.py 中定义一些字符串操作函数(如大写转换、小写转换)。
# utilities/string_utils.pydef to_uppercase(s):return s.upper()def to_lowercase(s):return s.lower()
    • file_utils.py 中定义一些文件操作函数(如读取文件内容、写入文件)。
# utilities/file_utils.pydef read_file(file_path):with open(file_path, 'r') as file:return file.read()def write_file(file_path, content):with open(file_path, 'w') as file:file.write(content)
    • 创建一个Python脚本,导入 utilities 包并调用这些函数。
# main_utilities.pyfrom utilities.string_utils import to_uppercase, to_lowercase
from utilities.file_utils import read_file, write_file# 使用字符串操作函数
s = "Hello, World!"
print(to_uppercase(s))  # 输出: HELLO, WORLD!
print(to_lowercase(s))  # 输出: hello, world!# 使用文件操作函数
file_path = 'example.txt'
content = "This is a test file."# 写入文件
write_file(file_path, content)# 读取文件
read_content = read_file(file_path)
print(read_content)  # 输出: This is a test file.

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

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

相关文章

如何对关键字段进行脱敏(二)如何在某些查询中取消脱敏?

要在使用Mybatis-plus进行数据库查询时准确区分哪些查询需要脱敏,哪些不需要,同时保留获取精确手机号码的能力,可以采用以下方案: 自定义注解标记 创建一个自定义注解,用于标记不需要脱敏的查询方法: Retention(RetentionPolicy.RUNTIME) Target(ElementType.METHOD) public…

TCP/IP模型每层内容和传输单位

TCP/IP(Transmission Control Protocol/Internet Protocol)模型是一种用于描述网络通信中协议层次结构的模型,它最初被设计用来描述互联网的协议栈。TCP/IP模型通常分为四层,自下而上分别为: 网络接入层(Ne…

js之模糊搜索

多的不说 少的不唠 直接上代码

使用el-form自定义校验的同时使用v-if/v-show引起的校验问题

有时候需要根据不同的条件来回显具体的内容,这时候就会用到v-if/v-show,此时表单的校验就可能会出现一些问题。 比如:使用v-if的时候,明明切换到了另一个条件,但是对应元素的表单校验却没有生效;使用v-show…

警翼警用记录仪视频格式化后恢复方法

警翼是国内较大的一家警用记录仪厂商,此品牌我们恢复过很多,此次遇到的是一个典型的误格式化的情况,我们来看看误格式化后如何恢复。 故障存储: 32G卡/fat32 故障现象: 客户提供的信息是在交接设备后没有及时备份而做出了初始化设备的操…

养老院管理系统-计算机毕业设计源码00010

养老院管理系统的设计与实现 摘要 本文介绍了一种基于Spring Boot框架的养老院管理系统的设计与实现。该系统旨在帮助养老院管理者更有效地管理机构内的各项事务,并提供更好的服务于老年人。系统的设计考虑了养老院管理的特殊需求,包括系统用户、老人信息…

高二的他已通过NOI保送北大了,让我们一起了解他的信息学奥赛学习经历吧!!!

相信关注本号的各位,对于信息学奥赛已经不陌生了,部分同学也已经开始踏入信息学的旅程,但前路茫茫,让我们一起看看已经取得成就的同学的经历吧。 今天要介绍的这位同学,是来自深圳中学的高二某班的欧阳达晟同学&#x…

简洁纯文字类的Typecho主题wenso

主题介绍 文章说说类博客网站源码,页面清新简洁。适合文章说说美文博客网站建站使用,响应式手机版本。 本来是dedecms的模板,也比较简单,适合用来搭建一个文学类的,纯文字的网站,简单的改成了typecho&…

AI写作开启新篇章

AI写作开启新篇章 随着人工智能技术的飞速发展,AI写作逐渐成为一种新的趋势和工具。它不仅为个人写作提供了便利,也在企业内容生产、学术研究、创意写作等领域展现了广泛的应用前景。AI写作的核心在于利用自然语言处理(NLP)技术&…

3086. 拾起 K 个 1 需要的最少行动次数 Hard

给你一个下标从 0 开始的二进制数组 nums,其长度为 n ;另给你一个 正整数 k 以及一个 非负整数 maxChanges 。 Alice 在玩一个游戏,游戏的目标是让 Alice 使用 最少 数量的 行动 次数从 nums 中拾起 k 个 1 。游戏开始时,Alice 可…

JVM 堆内存结构 年轻代 老年代

堆内存 内存划分 对于大多数应用,Java 堆是 Java 虚拟机管理的内存中最大的一块,被所有线程共享。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例以及数据都在这里分配内存。 为了进行高效的垃圾回收,虚拟机把堆内存…

线程池的七大核心参数

今天了解到线程池的七大核心参数包括: 1. 核心线程数(corePoolSize):线程池中能够同时执行的线程数量。 2. 最大线程数(maximumPoolSize):线程池中允许的最大线程数量。 3. 线程空闲时间&#…

小白 | 华为云docker设置镜像加速器

一、操作场景 通过docker pull命令下载镜像中心的公有镜像时,往往会因为网络原因而需要很长时间,甚至可能因超时而下载失败。为此,容器镜像服务提供了镜像下载加速功能,帮助您获得更快的下载体验。 二、约束与限制 构建镜像的客…

6年铲屎官测评宠物空气净化器哪款好,热门养宠空气净化器排名

作为一名资深猫奴,发现很多铲屎官每到春秋换季就开始疯狂打喷嚏、突然开始全身过敏。其原因是猫毛一到换季就开始疯狂掉毛,相对于可见猫毛,漂浮在空气中的浮毛就是罪灰祸首。微小的浮毛在空气总容易被人体吸入体内,而浮毛上面附带…

【Python机器学习】模型评估与改进——在模型选择中使用评估指标

我们通常希望,在使用GridSearchCV或cross_val_score进行模型选择时能够使用AUC等指标。scikit-learn提供了一种非常简单的实现方法,那就是scoring参数,它可以同时用于GridSearchCV和cross_val_score。你只需要提供一个字符串,用于…

Appium自动化测试框架3

滑动与拖拽 swipe 滑动时间的长短会影响最后的结果的 是有一定误差的 from appium import webdriver import time # 启动一个字典 包装相应的启动参数 desired_caps dict() # 平台的名字,安卓还是IOS 大小写无所谓 desired_caps[platformName] Android # 平台的…

软考(高项)系统分析师--开篇

文章目录 前言一、学习过程:二、考试过程:总结: 前言 博客主在2024年05月22号参加了高项的系统分析师考试,在此进行一个经验总结以供小伙伴参考,如果想参考博客主学习资料的可以在下方留言进行交流。 一、学习过程: 先说下时间&…

2.5 C#视觉程序开发实例1----设计一个IO_Manager

2.5 C#视觉程序开发实例1----设计一个IO_Manager 第一步目标: 1 实现获取IO触发信号Trig0 2 能够实现程序切换 3 图像处理后能够输出一个脉冲 1 IO 引脚定义 1.1 输入信号定义 1.2 输出信号定义 2 IO时序图 2.1 触发时序 2.2 切换程序时序图 3 IO_Manager.cs …

半实物仿真测试系统

设备组成 test系统主要由硬件部分与软件部分组成。硬件部分由PCI机箱、PCI控制器以及各种PCI接口板卡组成。软件部分由测试设计软件模块、测试执行服务软件模块、测试执行客户端软件模块、设备资源管理软件模块等主要软件模块以及曲线数据生成、CRC插件生成与诊断、测试数据记录…