当前位置: 首页 > news >正文

Python语法系列博客 · 第5期[特殊字符] 模块与包的导入:构建更大的程序结构

上一期小练习解答(第4期回顾)

✅ 练习1:判断偶数函数
def is_even(num):return num % 2 == 0print(is_even(4))  # True
print(is_even(5))  # False

✅ 练习2:求平均值

def avg(*scores):return sum(scores) / len(scores)print(avg(85, 90, 95))  # 输出 90.0

✅ 练习3:lambda 表达式排序

words = ["apple", "kiwi", "banana", "pear"]
words.sort(key=lambda x: len(x))
print(words)  # ['kiwi', 'pear', 'apple', 'banana']

本期主题:模块、包与标准库

模块和包是 Python 中代码复用的关键机制,理解它们能帮助你构建更大的工程。

5.1 什么是模块(module)

模块是一个 .py 文件,内部定义了变量、函数、类等。

✅ 示例:

假设我们有一个文件 math_utils.py

# math_utils.py
def add(a, b):return a + bdef sub(a, b):return a - b

我们可以在另一个文件中使用它:

import math_utilsprint(math_utils.add(3, 4))  # 输出 7

5.2 模块导入方式

✅ 方式1:导入整个模块
import math
print(math.sqrt(9))

 ✅ 方式2:导入模块中特定成员

from math import sqrt
print(sqrt(9))  # 直接使用 sqrt

✅ 方式3:导入并起别名

import numpy as np
print(np.array([1, 2, 3]))

5.3 自定义模块

你可以自己创建模块,只需将函数或类写在 .py 文件中即可。比如创建 my_utils.py

def greet(name):print(f"Hello, {name}")

在主程序中使用:

import my_utils
my_utils.greet("Tom")

✅ 注意:自定义模块需放在当前目录或 Python 路径中才能被导入。

5.4 包(package)

是一个包含 __init__.py 文件的文件夹,它可以包含多个模块或子包。

✅ 示例结构:

my_package/
├── __init__.py
├── file1.py
├── file2.py


使用方式

from my_package import file1
file1.function_name()

5.5 Python 标准库简介

Python 自带了很多强大的标准库,不需安装,直接导入即可。

模块用途
os文件/目录操作
sys系统参数和环境
math数学计算
random随机数
datetime时间处理
re正则表达式
json读写 JSON
collections高级数据结构

✅ 示例:使用 random 生成随机数 

import random
print(random.randint(1, 100))  # 1 到 100 之间的随机整数

 

5.6 第三方库的安装和导入(扩展知识)

通过 pip 命令可以安装第三方库:

pip install requests

安装后即可在代码中导入使用:

import requests
response = requests.get("https://www.example.com")
print(response.status_code)

 

本期小练习

  1. 创建一个模块 string_tools.py,编写一个函数 reverse_string(s),返回字符串反转结果。

  2. 编写一个包 my_math,其中包含 basic.pyadvanced.py 两个模块,分别定义加法函数和平方根函数。

  3. 使用标准库 random 随机生成一个长度为6的验证码(由数字和字母组成)。

小结:

这一期你了解了 Python 模块和包的基本概念、导入方式、如何自定义模块与包,并初步接触了标准库和第三方库。
这为你构建更大规模的 Python 项目打下基础!

第6期预告:

下一期我们将进入:

  • 文件读写操作

  • 文本处理基础

  • with语句和文件关闭机制

 

 

 

 

 

 

 

相关文章:

Python语法系列博客 · 第5期[特殊字符] 模块与包的导入:构建更大的程序结构

上一期小练习解答(第4期回顾) ✅ 练习1:判断偶数函数 def is_even(num):return num % 2 0print(is_even(4)) # True print(is_even(5)) # False✅ 练习2:求平均值 def avg(*scores):return sum(scores) / len(scores)print(…...

HashMap 初步理解 put 操作流程 HashMap 的线程安全问题

一、HashMap 核心原理 HashMap 是 Java 中最常用的哈希表实现,基于 数组 链表/红黑树 的复合结构,核心特性如下: 哈希函数 键的哈希值通过 hashCode() 计算,并通过扰动函数优化分布:static final int hash(Object ke…...

服务治理-服务发现和负载均衡

第一步:引入依赖 第二步:配置地址 改写购物车服务的代码 负载均衡成功实现。 假如有一个服务挂了,比如说8081,cart-service能不能正常访问,感知到。 再重新启动8081端口。 不管服务宕机也好,还是服务刚启动…...

GNU,GDB,GCC,G++是什么?与其他编译器又有什么关系?

文章目录 前言1. GNU和他的工具1.1 gcc与g1.2 gdb 2.Windows的Mingw/MSVC3.LLVM的clang/clang4.Make/CMake 前言 在开始之前我们先放一段Hello World&#xff1a;hello.c #include <stdio.h>int main() {printf("Hello World");return 0; }然后就是一段老生常…...

定制一款国密浏览器(9):SM4 对称加密算法

上一章介绍了 SM3 算法的移植要点,本章介绍对称加密算法 SM4 的移植要点。 SM4 算法相对 SM3 算法来说复杂一些,但还是比较简单的算法,详细算法说明参考《GMT 0002-2012 SM4分组密码算法》这份文档。铜锁开源项目的实现代码在 sm4.c 文件中,直接拿过来编译就可以。 但需要…...

kafka集群认证

1、安装Kerberos(10.10.10.168) yum install krb5-server krb5-workstation krb5-libs -y ​ 查看版本 klist -V ​ Kerberos 5 version 1.20.1 ​ 编辑/etc/hosts 10.10.10.168 ms1 10.10.10.150 ms2 10.10.10.110 ms3 vim /etc/krb5.conf # Configuration snippets ma…...

Mermaid 是什么,为什么适合AI模型和markdown

什么是 Mermaid&#xff1f; Mermaid 是一个基于 JavaScript 的开源绘图和图表工具&#xff0c;允许用户通过简单的文本语法创建图表。它支持生成流程图、时序图、类图、甘特图等多种类型的可视化内容&#xff0c;并直接从类似 Markdown 的代码中渲染。Mermaid 因其与 Markdow…...

为什么信号完整性对于高速连接器设计至关重要?

外部连接器通过在各种电子元件和系统之间可靠地传输数据而不损失保真度来保持信号完整性。在本文中&#xff0c;我们将讨论信号完整性的重要性&#xff0c;回顾高速部署挑战&#xff0c;并重点介绍各种连接器设计策略&#xff0c;以防止失真和降级。 了解连接器信号完整性挑战…...

【FFmpeg从入门到精通】第三章-FFmpeg转封装

1 音视频文件转MP4格式 在互联网常见的格式中&#xff0c;跨平台最好的应该是MP4文件&#xff0c;因为MP4文件既可以在PC平台的 Flashplayer 中播放&#xff0c;又可以在移动平台的 Android、ios 等平台中进行播放&#xff0c;而且使用系统默认的播放器即可播放&#xff0c;因…...

PG数据库推进医疗AI向量搜索优化路径研究(2025年3月修订版)

PG数据库推进医疗AI向量搜索优化路径研究 一、医疗 AI 向量搜索的发展现状与挑战 1.1 医疗数据特征与检索需求 医疗数据作为推动医疗领域进步与创新的关键要素,具有鲜明且复杂的特征。从多模态角度看,医疗数据涵盖了结构化数据,如患者基本信息、检验检查报告中的数值结果;…...

Android 下拉栏中的禁用摄像头和麦克风隐藏

Android 下拉栏中的禁用摄像头和麦克风隐藏 文章目录 Android 下拉栏中的禁用摄像头和麦克风隐藏一、前言二、下拉框中的禁用摄像头和麦克风隐藏实现1、设置支持属性为false2、修改代码 三、其他1、下拉栏中的禁用摄像头和麦克风隐藏小结2、 Android SensorPrivacyService ps&a…...

阿里云Clickhouse 冷热数据分层存储 实战记录

一、 背景 某业务Clickhouse库月数据增长超过2.5T&#xff0c;云上Clickhouse容量并不是无限的&#xff0c;单节点有32T上限&#xff0c;而业务已使用一半以上&#xff0c;依此速度&#xff0c;半年内就将达到上限。 与业务讨论&#xff0c;大致有以下几种解决思路&#xff1a;…...

ARINC818-实现

1.编码和解码&#xff1b;分隔符插入和删除&#xff1b;空闲idle字符插入 2.视频TX和RX接口&#xff1a;可以设计为流传输和帧同步传输 3.传输媒介&#xff1a;光纤或者铜缆 4.链路支持fc 1x,2x,3x,5x,6x,8x 上图中N有限制&#xff0c;N不能允许ADVB帧负载和填充长度不超过2112…...

OpenStack Yoga版安装笔记(23)Swift安装

一、官方文档 Object Storage Install Guide — Swift 2.29.3.dev5 documentation 二、环境准备 之前的实验&#xff0c;已经有controller, compute1, block1节点&#xff0c;并已经完成Keystone、Glance、Nova、Neutron、Cinder等主要OpenStack Service的安装。 此处新增…...

MySql 三大日志(redolog、undolog、binlog)详解

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/aa730ab3f84049638f6c9a785e6e51e9.png 1. redo log&#xff1a;“你他妈别丢数据啊&#xff01;” 干啥的&#xff1f; 这货是InnoDB的“紧急备忘录”。比如你改了一条数据&#xff0c;MySQL怕自己突然断电嗝屁了&am…...

算法题(128):费解的开关

审题&#xff1a; 本题需要我们将多组测试用例中拉灯数小于等于6的最小拉灯数输出&#xff0c;若拉灯数最小值仍大于6&#xff0c;则输出-1 思路&#xff1a; 方法一&#xff1a;二进制枚举 首先我们先分析一下基本特性&#xff1a; 1.所有的灯不可能重复拉&#xff1a;若拉的数…...

2025.04.19-阿里淘天春招算法岗笔试-第三题

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 03. 数值平衡之道 问题描述 LYA 是一位精通树形数据结构的数学家,她有一棵包含 n n n...

单片机毕业设计选题物联网计算机电气电子类

题目一&#xff1a;基于单片机的PM2.5空气质量检测仪器 选 1.用到ADC0832模数转换芯片&#xff0c;数据更加精准。 2.使用夏普传感器的GP2Y1010AUOF粉尘传感器实时检测空气中的PM2.5值并通过1602显示出来&#xff0c;检测准确。 3.LCD1602液晶第一行 前面显示测到的PM2.5…...

TDOA解算——牛顿迭代法|以4个基站的三维空间下TDOA定位为背景,使用牛顿迭代法解算。附完整代码,订阅专栏后可复制粘贴

本问所介绍的代码通过TDOA(到达时间差)方法,结合牛顿迭代算法,实现了三维空间内目标位置的定位。系统包含1个主锚点和3个副锚点,通过测量信号到达各基站的时间差计算距离差,最终迭代求解目标坐标。订阅专栏后可以获得完整的MATLAB代码,粘贴到空脚本中即可运行 文章目录 …...

海量聊天数据处理:基于Spring Boot与SharingJDBC的分库分表策略及ClickHouse冷热数据分离

引言 随着互联网应用的快速发展&#xff0c;每天产生的聊天记录数量级已经达到了惊人的程度。以2000万条/天为例&#xff0c;一年下来就是大约7.3亿条记录。如此庞大的数据量给数据库的设计和管理带来了前所未有的挑战。本文将探讨如何使用SharingJDBC整合Spring Boot技术来实…...

网络开发基础(游戏)之 Socket API

Socket简介 Socket (套接字)是网络编程的基础&#xff0c;在 C# 中通过 System.Net.Sockets 命名空间提供了一套完整的 API 来实现网络通信。 网络上的两个程序通过一个双向的通信连接实现数据交换&#xff0c; 这个连接的一端称为一个Socket。 一个Socket包含了进行网络通信必…...

在 Amazon Graviton 上运行大语言模型:CPU 推理性能实测与调优指南

引言 在生成式 AI 浪潮中&#xff0c;GPU 常被视为大模型推理的唯一选择。然而&#xff0c;随着 ARM 架构的崛起和量化技术的成熟&#xff0c;CPU 推理的性价比逐渐凸显。本文基于 Amazon Graviton 系列实例与 llama.cpp 工具链&#xff0c;实测了 Llama 3、DeepSeek 等模型的…...

基于尚硅谷FreeRTOS视频笔记——15—系统配制文件说明与数据规范

目录 配置函数 INCLUDE函数 config函数 数据类型 命名规范 函数与宏 配置函数 官网上可以查找 最核心的就是 config和INCLUDE INCLUDE函数 这些就是裁剪的函数 它们使用一个ifndef。如果定义了&#xff0c;就如果定义了这个宏定义&#xff0c;那么代码就生效。 通过ifn…...

Nacos 使用了什么日志框架?如何配置和查看日志?

Nacos 使用的日志框架 Nacos 主要使用 SLF4j (Simple Logging Facade for Java) 作为日志门面&#xff08;API&#xff09;&#xff0c;并选择 Logback 作为其底层的日志实现。 SLF4j: 这是一个日志抽象层&#xff0c;允许开发者在代码中使用统一的接口进行日志记录&#xff…...

【基于Fluent+Python耦合的热管理数字孪生系统开发:新能源产品开发的硬核技术实践】

引言&#xff1a;热管理数字孪生的技术革命 在新能源领域&#xff08;如动力电池、储能系统、光伏逆变器等&#xff09;&#xff0c;热管理是决定产品性能与安全的核心问题。传统热设计依赖实验与仿真割裂的流程&#xff0c;而数字孪生技术通过实时数据驱动与动态建模&#xf…...

【工具变量】A股上市公司信息披露质量KV指数测算数据集(含do代码 1991-2024年)

KV指数&#xff08;Key Value Index&#xff09;作为评估信息披露质量的关键指标&#xff0c;在证券市场&#xff0c;尤其是A股市场上市公司信息披露监管与评估中占据重要地位。该指数通过系统化、定量化的方法&#xff0c;对企业发布的信息进行全面剖析与打分&#xff0c;精准…...

【ELF2学习板】利用OpenMP采用多核并行技术提升FFTW的性能

目录 引言 OpenMP简介 编译OpenMP支持的FFTW库 部署与测试 测试程序 程序部署 测试结果 结语 引言 在前面已经介绍了在ELF2开发板上运行FFTW计算FFT。今天尝试利用RK3588的多核运算能力来加速FFT运算。FFTW利用多核能力可以考虑使用多线程或者OpenMP。今天介绍一下Ope…...

打靶日记 zico2: 1

一、探测靶机IP&#xff08;进行信息收集&#xff09; 主机发现 arp-scan -lnmap -sS -sV -T5 -p- 192.168.10.20 -A二、进行目录枚举 发现dbadmin目录下有个test_db.php 进入后发现是一个登录界面&#xff0c;尝试弱口令&#xff0c;结果是admin&#xff0c;一试就出 得到加…...

【技术派后端篇】 Redis 实现用户活跃度排行榜

在各类互联网应用中&#xff0c;排行榜是一个常见的功能需求&#xff0c;它能够直观地展示用户的表现或贡献情况&#xff0c;提升用户的参与感和竞争意识。在技术派项目中&#xff0c;也引入了用户活跃度排行榜&#xff0c;该排行榜主要基于 Redis 的 ZSET 数据结构来实现。接下…...

MySql Innodb详细解读

参考文档&#xff1a;https://www.cnblogs.com/acatsmiling/p/18424729 一、数据存储&#xff1a;从磁盘到内存的"黑帮走私" 1. 物理结构&#xff1a;表空间与页的江湖规矩 表空间&#xff08;Tablespace&#xff09;&#xff1a; 所有InnoDB数据存在表空间里&…...

每日两道leetcode

399. 除法求值 - 力扣&#xff08;LeetCode&#xff09; 题目 给你一个变量对数组 equations 和一个实数值数组 values 作为已知条件&#xff0c;其中 equations[i] [Ai, Bi] 和 values[i] 共同表示等式 Ai / Bi values[i] 。每个 Ai 或 Bi 是一个表示单个变量的字符串。 …...

在RK3588上使用哪个流媒体服务器合适

在RK3588平台上选择合适的流媒体服务器时&#xff0c;需考虑其ARM Cortex-A76/A55架构、硬件编解码能力&#xff08;如支持H.264/H.265/AV1解码&#xff09;以及Linux/Android系统支持。以下是推荐的方案&#xff1a; 1. 轻量级方案&#xff1a;GStreamer RTSP 适用场景&…...

分享一个DeepSeek+自建知识库实现人工智能,智能回答高级用法。

这个是我自己搞的DeepSeek大模型自建知识库相结合到一起实现了更强大的回答问题能力还有智能资源推荐等功能。如果感兴趣的小伙伴可以联系进行聊聊&#xff0c;这个成品已经有了实现了&#xff0c;所以可以融入到你的项目&#xff0c;或者毕设什么的还可以去参加比赛等等。 1.项…...

PyTorch 深度学习实战(38):注意力机制全面解析(从Seq2Seq到Transformer)

在上一篇文章中&#xff0c;我们探讨了分布式训练实战。本文将深入解析注意力机制的完整发展历程&#xff0c;从最初的Seq2Seq模型到革命性的Transformer架构。我们将使用PyTorch实现2个关键阶段的注意力机制变体&#xff0c;并在机器翻译任务上进行对比实验。 一、注意力机制演…...

Android Studio 获取配置资源与第三方包信息详解

文章目录 Android Studio 获取配置资源与第三方包信息详解一、获取资源文件中的配置1. 获取颜色值Java 中获取&#xff1a;Kotlin 中获取&#xff1a; 2. 获取字符串Java 中获取&#xff1a;Kotlin 中获取&#xff1a; 3. 获取尺寸值Java 中获取&#xff1a;Kotlin 中获取&…...

【网络初识】从零开始彻底了解网络编程(一)

本篇博客给大家带来的是网络的知识点. &#x1f40e;文章专栏: JavaEE初阶 &#x1f680;若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅&#x1f680; 要开心要快乐顺便进步 一. 网络…...

Vivado比特流生成、下载及板级验证操作步骤

1. 前期准备 安装Vivado软件&#xff1a;确保Vivado开发环境已正确安装并配置。创建工程&#xff1a; 打开Vivado&#xff0c;点击“Create Project”新建工程。设置工程名称&#xff08;例如“led_flow”&#xff09;和路径。选择目标FPGA型号&#xff08;例如XC7A35TFFG484&…...

【Flutter DevTools】性能优化的瑞士军刀

一、性能分析&#xff1a;帧率与资源监控 1.1 帧率监控&#xff08;Performance面板&#xff09; 通过Performance面板可实时捕获应用的渲染流水线数据。开发者点击"Record"按钮后&#xff0c;DevTools会以时间轴形式展示每一帧的构建、布局、绘制耗时。当帧率低于…...

使用Redis实现实时排行榜

为了实现一个实时排行榜系统&#xff0c;我们可以使用Redis的有序集合&#xff08;ZSet&#xff09;&#xff0c;其底层通常是使用跳跃表实现的。有序集合允许我们按照分数&#xff08;score&#xff09;对成员&#xff08;member&#xff09;进行排序&#xff0c;因此非常适合…...

HTML5 应用程序缓存:原理、实践与演进

在 Web 技术的发展历程中&#xff0c;HTML5 引入的应用程序缓存&#xff08;Application Cache&#xff09;曾是提升 Web 应用离线体验的重要技术。它允许 Web 应用进行缓存&#xff0c;使用户在没有因特网连接时也能访问应用&#xff0c;为 Web 应用带来了显著的优势。然而&am…...

Compose笔记(十七)--AsyncImage

这一节了解一下Compose中的AsyncImage的使用&#xff0c;AsyncImage是由 Coil库提供的一个用于异步加载图片的组件。它支持加载网络图片、本地图片资源&#xff0c;并提供了占位符、错误处理、过渡动画等功能&#xff0c;简单介绍如下: API 1. model 含义&#xff1a;指定要加…...

Python语法系列博客 · 第7期[特殊字符] 列表推导式与字典推导式:更优雅地处理数据结构

上一期小练习解答&#xff08;第6期回顾&#xff09; ✅ 练习1&#xff1a;统计文件行数 with open("data.txt", "r", encoding"utf-8") as f:lines f.readlines()print(f"总行数&#xff1a;{len(lines)}")✅ 练习2&#xff1a;反…...

Redis--主从复制

目录 一、配置 1.1 建立复制 1.2 断开复制 1.3 安全性 1.4 只读 1.5 传输延迟 二、拓扑 2.1 一主一从结构 2.2 一主多从结构 2.3 树形主从结构 在分布式系统中为了解决单点问题&#xff0c;通常会把数据复制多个副本部署到其他服务器&#xff0c;满足故障恢 复和负载均衡等需求…...

FPGA练习———DDS波形发生器

简介&#xff1a;使用DDS波形发生器可以在fpga上生成方波、正弦波等波形&#xff0c;其具体方法是计算相位的变化&#xff0c;然后根据数据表的数值进行数模转化改变波形。 DDS的第一步是生成一个相位加法器 相位加法器 在生成一个波&#xff0c;例如正弦波时&#xff0c;我们…...

力扣面试150题-- 存在重复元素 II和最长连续序列

Day 26 题目描述 思路 定义一个map用来存放每个元素以及它对应的序号从前向后遍历数组如果该元素存在于map&#xff08;说明满足了重复元素的条件&#xff09;&#xff0c;用当前元素的序号值减去map中存放的序号值&#xff08;因为是从前遍历的所以当前元素序号一定大于存放…...

卸载Anaconda并保留虚拟环境,重装Anaconda并还原之前的虚拟环境

参考 https://blog.csdn.net/qq_63611690/article/details/134560333 该博文是虚拟环境和Anaconda安装路径在一起 我的是虚拟环境早就搞到了别的盘 问题描述 我之前把Anaconda安装到了C盘&#xff0c;随之时间推移&#xff0c;C盘占用空间越来越大。我想把Anaconda卸载重装…...

ArcGIS及其组件抛出 -- “Sorry, this application cannot run under a Virtual Machine.“

产生背景&#xff1a; 使用的是“破解版本”或“被套壳过”的非官方 ArcGIS 版本 破解版本作者为了防止&#xff1a; 被研究破解方式 被自动化抓包/提权/逆向 被企业环境中部署多机使用 通常会加入**“虚拟化环境检测阻断运行”机制** 原因解释&#xff1a; 说明你当前运…...

Ubuntu 25.04 “Plucky Puffin” 正式发布

Ubuntu 25.04 “Plucky Puffin” 于 2025 年 4 月 17 日正式发布。这是一个短期支持版本&#xff0c;只支持到 2026 年 1 月1。以下是该版本的一些主要新变化&#xff1a; 内核与系统&#xff1a;采用 Linux 6.14 内核&#xff1b;systemd v257.4 带来重要上游更新&#xff0c;…...

2. ubuntu20.04 和VS Code实现 ros的输出 (C++,Python)

本节对应赵虚左ROS书籍的1.4.2 1)创建工作空间 mkdir -p catkin_ws/src cd catkin_ws catkin_make 2) 终端进入VS Code code . 3) vscoe 的基本配置 3.1&#xff09;修改.vscode/tasks.json ,修改内容如下&#xff1a; { // 有关 tasks.json 格式的文档&#xff0c;请参见…...

0801ajax_mock-网络ajax请求1-react-仿低代码平台项目

0 vite配置proxy代理 vite.config.ts代码如下图所示&#xff1a; import { defineConfig } from "vite"; import react from "vitejs/plugin-react";// https://vite.dev/config/ export default defineConfig({plugins: [react()],server: {proxy: {&qu…...