python yeild next使用注意事项

article/2025/9/6 19:24:43

关于得带的基本使用方法,可以往上查一下。这里主要记录下在编码中可能遇到的报错,和处理方式。

import timedef func3():for i in range(5):yield iwhile True:a = next(func3())print(a)time.sleep(1)

如果使用上面这种取值方式,你会发现会一直循环获取迭代对象的第一个值。

0
0
0

原因就是每次获取的都是新的可迭代对象。

稍作修改后如下:

import timedef func3():for i in range(5):yield ib = func3()
while True:a = next(b)print(a)time.sleep(1)

结果是:

0
1
2
3
4
Traceback (most recent call last):File "C:\Users\36905\PycharmProjects\TicketDowngrade\test\3.py", line 43, in <module>a = next(b)
StopIteration

这样取值就是正常的。但是居然报错,这里是正常的,当取不到值时,就会通过报 StopIteration信号。

优化下代码:

import timedef func3():for i in range(5):yield ib = func3()
while True:try:a = next(b)except StopIteration:breakprint(a)time.sleep(1)

这样结果就正常了。

更详细的原理处理过程可以参考:

​​​​​​关于python:yield如何捕获StopIteration异常? | 码农家园

注意:

        而且编码的过程中发现,如果出现多层for循环或者参杂递归函数后的yield迭代逻辑,也会出现一些问题。

        因为for循环本身具备迭代性,同样支持next方法。所以外部next调用的时候,会返回第一层for循环中的二次调用函数对象本身。可以通过再次next方法及next(next(func))来实现底层yield的调用。但这样带来的问题就是。你自己也搞不清楚拿到的到底是第几层的第几次调用,比较烧脑。有没有大神提供下好的方法或者解决方案。欢迎评论留言。这里先行感谢了。

未知蹊跷逻辑:

 

        昨天在开发的过程中。在多层嵌套for循环后,我居然发现有写逻辑居然出现错误,if判断数值大小,居然失效,全是TRUE通过。除非添加else,否则一定通过if,这样我也很费解。而且不是偶发通过,是必然不做判断。不知道是python3.9.7的原因还是我电脑芯片架构有问题。有相同经历的,也可以告诉我原因。今天又试了下,居然又正常了。


http://chatgpt.dhexx.cn/article/EukWn6t4.shtml

相关文章

Java多线程礼让yeild()和插队join()方法案例

一. yeild()和join()方法 1.yeild():线程礼让&#xff0c;让当前正在执行的线程可能暂停&#xff0c;但不阻塞 2.yeild():当前正在执行的线程可能暂停&#xff0c;也可能不暂停。 3.yeild():是静态方法&#xff0c;而join()是非静态方法 4.join():能…

gitlab artifacts too large

gitlab在打包artifacts遇到&#xff1a; Uploading artifacts as “archive” to coordinator… too large archive 413 error 网上看了很多方案&#xff0c;一般都是说在admin账户的setting下找到CI/CD&#xff0c;把Maximum artifacts size (MB)改大点 当然这是其中一个点哈…

IDEA 解决 artifacts not found 问题

目录 1. 问题2. 解答方法一方法二 1. 问题 部署 Tomcat 时&#xff0c;选择 Edit Configuration 无 Artifact 选项。 2. 解答 方法一 选择 Fix 直接修复即可。 方法二 打开 Project Structure&#xff1b;选择 Aritfacts 选项&#xff1b;点击 号&#xff0c;选择 Web …

jenkins使用Send build artifacts over SSH遇到的坑

在jenkins构建项目后&#xff0c;优势需要把jar等文件复制到其他服务器&#xff0c;如下图&#xff0c;可以使用Send build artifacts over SSH功能。 但是在使用时可能会遇到无法复制成功 可以从以下几方面入手&#xff0c;基本可以解决该问题 1、检查是否配好了目标主机的用…

【论文笔记】Details or Artifacts: A Locally Discriminative Learning Approach toRealistic Image Super-Reso

细节还是伪纹理&#xff1a;真实图像超分辨率的局部判别方法 来自于CVPR2022&#xff0c;作者Jie Liang&#xff0c; Hui Zeng and Lei Zhang 论文地址&#xff1a;https://arxiv.org/abs/2203.09195 Abstract: 目前超分想要优异的纹理信息&#xff0c;那GAN&#xff08;生成…

解析IDEA中的Artifacts配置

1. Artifact 2. Artifact名称 3. Artifact类型 4. 输出路径&#xff08;也就是Deployment root部署根目录&#xff09;&#xff0c;项目运行后的输出根目录 5. 输出根目录&#xff0c;即4指定的地址 6. 输出目录下的结构层次 针对指定项目&#xff0c;对应分析 1. 输出根…

idea配置Tomcat时没有Artifacts选项

想要解决没有artifacts选项的问题&#xff0c;首先要配置项目结构。 点击加号&#xff0c;选择web 然后修改地址,编译后的文件将会生成在你修改的文件夹下&#xff0c;点击Apply应用所作的修改&#xff0c;然后点击Create Artifacts 此时idea就会在Artifacts下生成一个Web expl…

idea为web项目添加tomcat并配置Artifacts

背景 有一天聪明的小峰从网上找了一个web项目&#xff0c;但是只有代码没有启动步骤&#xff0c;作为小白的我解决这个问题也不太顺利特此记录一下。 主要解决的问题&#xff1a; 为项目添加tomact 配置Artifacts 引入 jar包 小峰找的项目地址&#xff1a;https://github.com/…

idea配置factets和Artifacts

最近需要把项目部署到服务器&#xff0c;需要打个war包&#xff0c;有好多不太明白&#xff0c;把搜索学习到的知识点汇总一下&#xff0c;以备后用&#xff0c;本人使用的版本是2020.3版本。 在说明这个配置过程之前&#xff0c;先简单的介绍一下这两个是什么&#xff0c;有什…

IDEA中WEB项目结构和Artifacts设置

公司的WEB项目结构一直比较随意&#xff0c;没有统一的规范&#xff0c;新增项目也是直接用旧的项目文件夹拷贝过去修改&#xff0c;时间长了以后项目文件结构混乱&#xff0c;研究了半天终于找到了&#xff08;可能&#xff09;正确的目录结构设置&#xff0c;能够直接输出正确…

棋盘效应(Checkerboard Artifacts)

定义&#xff1a;棋盘效应是由于反卷积的“不均匀重叠”&#xff08;Uneven overlap&#xff09;的结果。使图像中某个部位的颜色比其他部位更深&#xff1a; 具体原因&#xff1a;在反卷积操作时&#xff0c;如果卷积核&#xff08;Kernel&#xff09;大小不能被步长&#xff…

Idea 精准到类的打包方式:Artifacts 打包

这种打包方式更精确&#xff0c;可以直接精确到具体类&#xff0c;这种情况下打的包&#xff0c;上传到 Flink web 时&#xff0c;不需要手动写入 class 文件名&#xff0c;它会自动填入&#xff0c;如果没有自动填入&#xff0c;或许是你的 Flink 版本太低了&#xff0c;我的是…

Idea 2022 创建 Artifacts 运行 Tomcat 步骤

每次一个新 web 项目都被 idea 搞的晕头转向。只要是 xml 文件无法发布&#xff0c;初步判断这是 idea 的一个 bug&#xff0c;现整理如下。 首先确保 Project Structure 下 Modules 的配置正确。 Project Structure / Artifacts / 中使用 号菜单进入如下图界面。 从 Modules …

Bug:No artifacts configured

可能是因为项目是直接git下来的&#xff0c;所以项目的框架不完整&#xff0c;缺少web功能&#xff0c;因此在配置tomcat server时&#xff0c;没有artifacts可选 目前已经解决了此问题&#xff0c;因此记录一下解决的方法步骤 配置artifacts 在idea中&#xff0c;依次点击Fi…

Idea的Artifacts

Artifacts&#xff08;Web部署-2&#xff09; 项目的打包部署设置&#xff0c;这个是项目配置里面比较关键的地方&#xff0c;重点说一下。 先理解下它的含义&#xff0c;来看看官方定义的artifacts&#xff1a; An artifact is an assembly of your project assets that you…

IDEA通过Artifacts发布Web项目

今天在用IDEA运行一个Java Web项目时突然报错java.lang.ClassNotFoundException: com.mysql.jdbc.Driver&#xff0c;但是我的项目的lib目录下以及添加了jdbc的连接jar包&#xff0c;而且在IDEA中编译没有报错&#xff0c;而且之后我自己添加的两个jar包也找不到&#xff0c;但…

idea Artifacts 配置

以Artifacts方式工作 什么是artifact&#xff1f; artifact是一种用于装载项目资产以便于测试&#xff0c;部署&#xff0c;或者分布式软件的解决方案。例如集中编译class&#xff0c;存档java应用包&#xff0c;web程序作为目录结构&#xff0c;或者web程序存档等。 artifact …

IDEA中的Build Artifacts详解

使用IDEA编写完JAVA代码&#xff0c;需要对外发布时&#xff0c;我们就会用到IDEA的Build Artifacts...功能。在没有创建Artifact时&#xff0c;菜单“Build”|"Build Artifacts..."是灰化的&#xff0c;不可用。所以&#xff0c;第一步是进入project structure创建A…

No artifacts configured

在配置tomcat得时候出现这种情况有可能是&#xff0c;IDEA中没有导入web得框架。 1、点击项目得添加框架这个选项 2、选上&#xff0c;点击ok即可。这是再去看tomcat中就会出现artifacts。

Idea配置项目的tomcat时候没有Artifacts的最全解决办法

很多时候导入别人的项目&#xff0c;配置tomcat的时候会发现没有Artifacts&#xff0c;这种情况可能有两个原因&#xff0c;任何一个原因都可能导致Artifacts没有。 原因一&#xff1a; 没有勾选maven的一些选项导致的&#xff0c;不过这个原因其实很少会发生。解决办法如下&a…