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

python进阶七 Python其他高级语法

一 With语句和上下文管理器1.1 with语句文件操作回顾# 1、以写的方式打开文件fopen(1.txt,w)# 2、写入文件内容f.write(hello world)# 3、关闭文件f.close()代码说明: 文件使用完后必须关闭因文件对象会占用操作系统的资源并且操作系统同一时间能打开的文件数量也是有限的这种写法可能出现一定的安全隐患错误代码如下:# 1、以读的方式打开文件fopen(1.txt,r)# 2、写入文件内容f.write(hello world)# 3、关闭文件f.close()运行结果① 由于文件读写时都有可能产生IOError一旦出错后面的f.close()就不会调用。② 为了保证无论是否出错都能正确地关闭文件我们可以使用try … finally来解决try…except…finally解决文件操作异常安全写法, 代码如下:try:# 1、以读的方式打开文件fopen(1.txt,r)# 2、读取文件内容f.write(xxxxx)exceptIOErrorase:print(文件操作出错,e)finally:# 3、关闭文件f.close()结果with语句try-except-finally语句缺点代码过于冗长, 不易用易忘上下文管理器with语句该机制简单、更安全的处理资源和异常特点with 语句执行完成后自动调用关闭文件操作即使出现异常也会自动调用关闭文件操作实例代码# 1、以写的方式打开文件withopen(1.txt,w)asf:# 2、读取文件内容f.write(hello world)1.2 上下文管理器一个类只要实现了__enter__()和__exit__()这个两个方法通过该类创建的对象我们就称之为上下文管理器上下文管理器可以使用 with 语句with语句之所以这么强大背后是由上下文管理器做支撑的刚才使用 open 函数创建的文件对象就是就是一个上下文管理器对象大白话with 管理的对象就是上下文管理器 with xxx as 后面的操作的对象就是被管理的对象定义上下文管理器类,模拟文件操作定义一个File类实现enter() 和exit()方法然后使用 with 语句来完成操作文件classMyFile(object):def__init__(self,file_name,file_model):self.file_namefile_name self.file_modelfile_model self.fpNone# 文件句柄def__enter__(self):print(这是上文)self.fpopen(self.file_name,self.file_model)returnself.fpdef__exit__(self,exc_type,exc_val,exc_tb):print(这是下文)self.fp.close()# 0 什么是上下文管理器 with 管理的对象就是上下文管理器# 1 定义一个File类# 2 重写魔法方法 __enter__() 和 __exit__()方法# 3 然后使用 with 语句来完成操作文件if__name____main__:# myobj MyFile(./1.txt, r)withMyFile(./1.txt,r)asf:filedataf.read()print(filedata--,filedata)一个类只要实现了__enter__()和__exit__()这个两个方法通过该类创建的对象我们就称之为上下文管理器__enter__表示上文方法需要返回一个操作文件对象__exit__表示下文方法with语句执行完成会自动执行即使出现异常也会执行该方法二 Python生成器2.1 什么是生成器根据程序员制定的规则循环生成数据当条件不成立时则生成数据结束。数据不是一次性全部生成出来而是使用一个再生成一个可以节约大量的内存。创建生成器的方式① 生成器推导式 ② yield 关键字2.2 生成器推导式创建生成器# 注意1括号代表 这是一个生成器不是元组# 注意2括号里面写的是数据的生成规则返回一个对象# 对象内不是存的数据而是产生数据的规则my_generator(i*2foriinrange(5))# 根据注意2print(my_generator)# next获取生成器下一个值# value next(my_generator)# print(value)# 遍历生成器forvalueinmy_generator:print(value)生成器相关函数next 函数获取生成器中的下一个值for 循环遍历生成器中的每一个值2.3 yield生成器只要在def函数里面看到有 yield 关键字那么就是生成器defmygenerater(n):foriinrange(n):print(开始生成...)yieldiprint(完成一次...)if__name____main__:gmygenerater(2)# 获取生成器中下一个值# result next(g)# print(result)# while True:# try:# result next(g)# print(result)# except StopIteration as e:# break# # for遍历生成器, for 循环内部自动处理了停止迭代异常使用起来更加方便foriing:print(i)2.4 生成器的应用场景 – 数据迭代器dataloader的封装importmathdefdataset_loader(bath_size):# 1 读歌词withopen(./jaychou_lyrics.txt,r)asfile:linesfile.readlines()# 2 统计共有多少条歌词lyrics_numberlen(lines)# 3 计算共有多少个批次 math.ceil向上取整 math.floor向下取整batch_numbermath.ceil(lyrics_number/bath_size)# 4 遍历每一个 batchforidxinrange(batch_number):yieldlines[idx*bath_size:idx*bath_sizebath_size]if__name____main__:dataloaderdataset_loader(8)fordataindataloader:print(data)print(创建生成器(数据加载器) 为AI专业课做准备 End)很多模型都是一个批次一个批次的给模型喂数据来训练模型的。构建数据迭代器每8个条数据8个样本8个数据的给模型喂数据

相关文章:

python进阶七 Python其他高级语法

一 With语句和上下文管理器 1.1 with语句 文件操作回顾 # 1、以写的方式打开文件f open("1.txt", "w")# 2、写入文件内容f.write("hello world")# 3、关闭文件f.close()代码说明: 文件使用完后必须关闭,因文件对象会占用操作系统的…...

postgresql15 postgresql.cof-data_directory

在postgresql里,data_directory指的是数据库实例的数据目录,也就是postgresql存放数据文件、WAL、配置文件(部分)的地方。data_directory参数值的修改,需要重启postgresql才能生效。如何查看当前data_directory:-bash-4.2$ psql p…...

力扣hot100第八题:无重复字符的最长子串python代码实现

第一部分:问题描述 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。注意 "bca" 和 "cab" 也是正确答案。…...

Qwen3-1.7B语音识别教程:支持SRT/VTT字幕生成、时间轴对齐、多说话人区分标注

Qwen3-1.7B语音识别教程:支持SRT/VTT字幕生成、时间轴对齐、多说话人区分标注 1. 引言:从“听不清”到“看得懂”的智能转录 你有没有遇到过这样的场景?一段重要的会议录音,想要整理成文字纪要,结果发现背景嘈杂、多…...

Neeshck-Z-lmage_LYX_v2企业级:支持审计日志与生成记录全链路追踪

Neeshck-Z-lmage_LYX_v2企业级:支持审计日志与生成记录全链路追踪 1. 项目简介:一个更懂你的本地绘画助手 如果你尝试过在本地运行一些AI绘画模型,可能会遇到几个头疼的问题:模型太大,显卡内存不够用;想换…...

Gemma-3-12B-IT精彩案例分享:从初学者提问到完整函数实现的全过程

Gemma-3-12B-IT精彩案例分享:从初学者提问到完整函数实现的全过程 1. 引言:为什么这个案例值得一看? 如果你正在寻找一个能真正帮你写代码、解答疑惑的AI助手,那么今天分享的这个案例可能会让你眼前一亮。我们不是要讲空洞的理论…...

终极解决方案:Scroll Reverser如何彻底解决Mac滚动方向混乱问题

终极解决方案:Scroll Reverser如何彻底解决Mac滚动方向混乱问题 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 你是否每天都要在触控板的自然滚动和鼠标的传统滚动之…...

nomic-embed-text-v2-moe实战教程:嵌入向量持久化到FAISS/Chroma向量库

nomic-embed-text-v2-moe实战教程:嵌入向量持久化到FAISS/Chroma向量库 你是不是遇到过这样的问题:手头有一堆文档、文章或者产品描述,想快速找到和某个问题最相关的内容,却只能靠手动搜索关键词,效率低下还容易遗漏&…...

WindowsCleaner:快速解决C盘爆红的终极免费工具

WindowsCleaner:快速解决C盘爆红的终极免费工具 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否经历过电脑突然变慢,C盘空间不足的红…...

实测ClearerVoice-Studio三大功能:语音增强、分离、提取到底有多强?

实测ClearerVoice-Studio三大功能:语音增强、分离、提取到底有多强? 1. 开箱即用的语音处理神器 ClearerVoice-Studio可能是目前最省心的语音处理工具包。不需要懂深度学习,不需要配置复杂环境,甚至不需要准备训练数据——它已经…...

码上去学海南公司:C语言到底能干什么?我列举了8种经典案例

虽然C语言执行速度极快,占用资源极少,但是它使用起来非常麻烦,完全没有 Java、Python、Go、JavaScript、C# 等方便和灵活,会严重拖慢项目的开发进度,所以,通常只有在“不得不”的情况下才会使用C语言。 再说…...

开启MySQL8的密码策略组件validate_password

一、validate_password组件安装配置1. 安装组件INSTALL COMPONENT file://component_validate_password;安装后,密码策略立即生效,但仅影响后续操作(如新建用户或修改密码)。2. 卸载组件UNINSTALL COMPONENT file://component_val…...

nginx的子路径的重写替换全攻略

在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径;如果没有/,表示相对路径,把匹配的路径部分也给代理走。假设下面四种情况分别用 http://192.168.1.1/proxy/test.html 进行访问。第一…...

YOLOv1深度解析:核心知识点、优势与局限

一、引言:YOLOv1的革命性意义 YOLOv1(You Only Look Once)由Joseph Redmon等人于2015年提出,是目标检测领域的一个里程碑式工作。其核心创新在于将目标检测重构为一个单一的回归问题,摒弃了传统两阶段方法(如R-CNN系列)中先提取候选区域(Region Proposal)再分类的繁琐…...

Qwen3-VL-8B创意编程:用AI解读并生成Processing艺术代码

Qwen3-VL-8B创意编程:用AI解读并生成Processing艺术代码 1. 引言:当AI遇见创意编程 你有没有过这样的经历?在网上看到一个用Processing、p5.js这类创意编程语言生成的酷炫动态图形,心里想着“这效果真棒,我也想做一个…...

HPH的构造 高压均质机内部揭秘

高压均质机(HPH)是制药、食品和化工领域的关键设备,其构造直接决定了物料的均质效果与设备稳定性。理解HPH的构造,不仅有助于日常操作维护,更能为工艺优化提供依据。下面从三个核心部件展开,帮助您快速掌握…...

TTY子系统与线路规程:那个让我深夜抓狂的串口“丢包”问题

上周调试一个工业网关项目,串口通信总是随机丢数据。示波器抓波形一切正常,但应用层收到的报文时不时就少几个字节。熬到凌晨三点,盯着stty -F /dev/ttyS0的输出发呆,突然意识到问题可能不在硬件,而在那个我一直忽略的…...

UART串口驱动框架:从一次深夜调试说起

凌晨两点,示波器上的波形还在跳,串口就是不出数据。同事把逻辑分析仪往我桌上一放:“115200波特率,8N1,配置绝对没错,但tty设备就是没反应。” 我盯着内核日志里那句“ttyS0: tx fifo empty”,突…...

Ostrakon-VL开源大模型镜像一键部署全攻略

Ostrakon-VL开源大模型镜像一键部署全攻略 1. 引言:为什么选择Ostrakon-VL 最近开源大模型领域又添新成员,Ostrakon-VL以其出色的多模态理解能力吸引了不少开发者关注。这个模型不仅能处理文本,还能理解图片内容,在智能客服、内…...

Claude读论文系列(十)

精读笔记:CoDe-R CoDe-R: Refining Decompiler Output with LLMs via Rationale Guidance and Adaptive Inference arXiv: 2604.12913 | cs.SE / cs.AI / cs.CR 会议:IJCNN 2026(已收录) 机构:未标注(第一作…...

Python一键批量合并多个Excel表格,职场办公高效神器

前言日常办公里,我们常会收到多个格式一致的Excel表格,比如各部门报表、每日数据统计表、员工信息表等,手动把这些表格复制粘贴合并,不仅耗时费力,还极易出现数据遗漏、格式错乱的问题。这篇文章带来超简单的Python办公…...

TVA在精密制造领域的应用案例(11)

前沿技术背景介绍:AI 智能体视觉检测系统(TVA,全称为 Transformer-based Vision Agent),是基于 Transformer 架构与 “因式智能体” 范式构建的高精度视觉智能体。它区别于传统机器视觉软件及早期 AI 视觉技术&#xf…...

如何让导航栏下落动画变慢?——CSS 动画时长精准控制教程.txt

PROFILE 是 MySQL 旧版查询阶段耗时分析功能,因不稳定、不维护、不支持预编译语句及精确等待分类,自 5.7 弃用、8.0 移除;现推荐 Performance Schema 或慢日志 pt-query-digest 替代。PROFILE 是什么,为什么它现在基本没用了MySQ…...

影像生成模型的数学原理

1.z是生成一个feature(特征) 2.Network相当于是一个函数G(z)x,通过输入z特征来生成x(目标图) 注意:输入network中的z不一定是向量,图片,可以是任何形式,因为最后都会通过encoder来提取特征&…...

构建基于千问3.5-2B的AI Agent:从理论到实现

构建基于千问3.5-2B的AI Agent:从理论到实现 1. 什么是AI Agent? AI Agent(人工智能代理)是一种能够自主感知环境、做出决策并执行行动的智能系统。不同于传统AI模型仅能完成单一任务,AI Agent更像是一个"数字员…...

TVA在齿轮箱零部件及其装配质检中的应用(六)

前沿技术背景介绍:AI 智能体视觉检测系统(TVA,全称为 Transformer-based Vision Agent),是基于 Transformer 架构与 “因式智能体” 范式构建的高精度视觉智能体。它区别于传统机器视觉软件及早期 AI 视觉技术&#xf…...

Qwen3-TTS-1.7B部署教程:systemd服务封装与开机自启配置方法

Qwen3-TTS-1.7B部署教程:systemd服务封装与开机自启配置方法 本文介绍如何将Qwen3-TTS-1.7B语音合成模型封装为systemd服务,实现一键启动、自动重启和开机自启,让AI语音服务像系统服务一样稳定运行。 1. 项目概述与环境准备 Qwen3-TTS-1.7B是…...

SDMatte效果对比展示:普通抠图vs SDMatte+,叶片锯齿消除与羽化自然度

SDMatte效果对比展示:普通抠图vs SDMatte,叶片锯齿消除与羽化自然度 1. 效果展示概览 SDMatte作为一款专业级AI抠图工具,在处理复杂边缘和半透明物体方面展现出显著优势。本文将重点对比标准版SDMatte与增强版SDMatte在处理叶片锯齿和羽化效…...

爬虫对抗:ZLibrary 反爬机制实战分析

引言ZLibrary 作为全球规模领先的数字文献共享平台,累计收录超千万册电子书籍与学术文献,在知识传播与资源获取领域具备广泛影响力,同时也因海量公开可访问数据成为网络爬虫的重点目标。网络爬虫作为自动化数据采集的核心工具,可高…...

网络分析仪去嵌方法

一、去嵌目的 VNA 校准参考平面在同轴端口,而 DUT 通过夹具、探针、转接器、PCB 走线连接。 这些中间环节会引入:额外损耗、相位偏移、阻抗失配、串扰、色散。 不去嵌,测得的是「DUT + 中间网络」的混合特性,无法得到 DUT 真实性能; 去嵌入对象:夹具板的 Lead-ins 和 Lea…...