百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

带你发现藏在try语句中的秘密,谁也没想到代码里还藏着狗血剧情

itomcoil 2025-06-15 17:00 10 浏览


杂谈

小卡是物联网行业的,经常需要从文本中提取数据内容,例如从 txt 中获取一段波形数据,然后通过算法进行解析。

长这样的

今天客户来问要一段数据,之前北京那发生了地震,正好咱们厂的传感器也在那附近,要将地震数据取出来看看。

所以就要将字符串转变为数据取出来,用到最多的方法就是:

path = 'xxxx.txt'
values = []
with open(path, 'r') as f:
    for line in f:
        try:
            s_list = line.split(',')
            v = float(s_list[1])
            values.append(v)
        except Exception as e:
            pass

print(values)

try 语句用的非常多,心血来潮,咱们今天就说一说 try 的秘密,看看到底是 它的秘密多还是维多利亚的秘密 更多。

看到最后,结尾有彩蛋!

1、常见的try

常见的 try 语句是下面这样的:

try:
    pass
except:
    pass

我们现在将其放到函数中,来用 return 进行返回值处理,那么下面的情况,你们猜应该返回什么内容呢?

def test():
    a = '1a'
    try:
        int(a)
        return '强转'
    except:
        return '异常'


print(test())
  • A、异常
  • B、强转

聪明的你有没有选对答案,答案其实就是 A,返回了异常。我想大部分同学都做对了,那么我们来修改一下题目。

2、增加finally

现在的代码进行了修改,我们将 finally 引入进来:

def test():
    a = '1a'
    try:
        int(a)
        return '强转'
    except:
        return '异常'
    finally:
        return '最终'

print(test())

请问现在的代码将返回什么内容呢?

  • A、异常
  • B、强转
  • C、最终

这次的答案是 C, 是 “最终”,我想已经有同学选错了吧。添加了 finally 就不再回到异常处理的代码块了,而来到了 finally 的领域。

那我们现在将 a = '1a' 改为 a = '1' ,答案又会如何?

def test():
    a = '1'
    try:
        int(a)
        return '强转'
    except:
        return '异常'
    finally:
        return '最终'

print(test())
  • A、异常
  • B、强转
  • C、最终

我们的答案还是 C,没想到无论如何,只要 try 中出现了 finally,那么最终都会运行 finally 代码,即使代码块中存在 return

3、增加else语句

虽然 else 这个语句基本上没人用到,但我们也不防来看看它的代入会有什么不一样的体验。

finally 我们不再放入测试代码,它的权力最大,所以加不加入 else 都不会改变都由它来输出。

首先看看当 a = '1a' 无法强转的情况:

def test():
    a = '1a'
    try:
        int(a)
        return '强转'
    except:
        return '异常'
    else:
        return '转折'


print(test())
  • A、异常
  • B、强转
  • C、转折

答案是 A ,因为无法强转,所以将由 except 来接管,接着我们再将 a = '1a' 改为 a = '1',看看可以强转的情况:

def test():
    a = '1'
    try:
        int(a)
        return '强转'
    except:
        return '异常'
    else:
        return '转折'


print(test())
  • A、异常
  • B、强转
  • C、转折

这次就不卖关子了,答案是 B 强转,我们可以看到 else 毫无权力,基本上有它没它都一样。

那么有人就想打印输出 “转折” 该如何操作呢?下面的代码就可以输出 “转折”

def test():
    a = '1'
    try:
        int(a)
    except:
        return '异常'
    else:
        return '转折'


print(test())

try 下面删除了 return,终于让 else 得到了一次展示的机会。

这就就像苦苦追求的 try 女神偶然开了金口愿意去看电影,else 赶紧屁颠屁颠去买票。

4、总结

可以看到,在 try 语句中,即使存在 returnfinally 就是强势的大佬,一出现 try 小姐就得跟着走。

else 就像舔狗可有可无,只要 try 女神一开金口,他就愿意付出一切。

只有 tryexcept 是真爱,只有他俩搭配,才是最强的组合。

小卡默默地看着屏幕上冰冷的代码,感觉像是看了一部三角恋,哦,不,是四角恋的肥皂剧,再也无法直视 try 的语法了,还是安安稳稳不要让 finally和else 出现了,让 try和except 好好生活吧!

try:
    pass
except:
    pass

别找了,彩蛋就是 try小姐 的四角恋,快来评论区告诉我你支持 try小姐跟谁在一块儿吧!

相关推荐

Java 如何从一个 List 中随机获得元素

概述从一个List中随机获得一个元素是有关List的一个基本操作,但是这个操作又没有非常明显的实现。本页面主要向你展示如何有效的从List中获得一个随机的元素和可以使用的一些方法。选择一个...

想月薪过万吗?计算机安卓开发之"集合"

集合的总结:/***Collection*List(存取有序,有索引,可以重复)*ArrayList*底层是数组实现的,线程不安全,查找和修改快,增和删比较慢*LinkedList*底层是...

China Narrows AI Talent Gap With U.S. as Research Enters Engineering Phase: Report

ImagegeneratedbyAITMTPOST--ChinaisclosinginontheU.S.intheAIindustry-academia-research...

大促系统优化之应用启动速度优化实践

作者:京东零售宋维飞一、前言本文记录了在大促前针对SpringBoot应用启动速度过慢而采取的优化方案,主要介绍了如何定位启动速度慢的阻塞点,以及如何解决这些问题。希望可以帮助大家了解如何定位该类问...

MyEMS开源能源管理系统核心代码解读004

本期解读:计量表能耗数据规范化算法:myems/myems-normalization/meter.py代码见底部这段代码是一个用于计算和存储能源计量数据(如电表读数)的小时值的Python脚本。它主...

Java接口与抽象类:核心区别、使用场景与最佳实践

Java接口与抽象类:核心区别、使用场景与最佳实践一、核心特性对比1.语法定义接口:interface关键字定义,支持extends多继承接口javapublicinterfaceDrawabl...

超好看 vue2.x 音频播放器组件Vue-APlayer

上篇文章给大家分享了视频播放器组件vue-aliplayer,这次给大家推荐一款音频插件VueAplayer。vue-aplayer一个好看又好用的轻量级vue.js音乐播放器组件。清爽漂亮的U...

Linq 下的扩展方法太少了,MoreLinq 来啦

一:背景1.讲故事前几天看同事在用linq给内存中的两个model做左连接,用过的朋友都知道,你一定少不了一个叫做DefaultIfEmpty函数,这玩意吧,本来很流畅的from......

MapReduce过程详解及其性能优化(详细)

从JVM的角度看Map和ReduceMap阶段包括:第一读数据:从HDFS读取数据1、问题:读取数据产生多少个Mapper??Mapper数据过大的话,会产生大量的小文件,由于Mapper是基于虚拟...

手把手教你使用scrapy框架来爬取北京新发地价格行情(实战篇)

来源:Python爬虫与数据挖掘作者:霖hero前言关于Scrapy理论的知识,可以参考我的上一篇文章,这里不再赘述,直接上干货。实战演练爬取分析首先我们进入北京新发地价格行情网页并打开开发者工具,如...

屏蔽疯狂蜘蛛,防止CPU占用100%(mumu模拟器和雷电模拟器哪个更占用cpu)

站点总是某个时间段莫名的cpu100%,资源占用也不高,这就有必要怀疑爬虫问题。1.使用"robots.txt"规范在网站根目录新建空白文件,命名为"robots.txt&#...

Web黑客近年神作Gospider:一款基于Go语言开发的Web爬虫,要收藏

小白看黑客技术文章,一定要点首小歌放松心情哈,我最爱盆栽!开始装逼!Gospider是一款运行速度非常快的Web爬虫程序,对于爱好白帽黑客的小白来说,可谓是佳作!Gospider采用厉害的Go语言开发...

用宝塔面板免费防火墙屏蔽织梦扫描网站

今天教大家在免费的基础上屏蔽织梦扫描,首先您要安装宝塔面板,然后再安装免费的防火墙插件,我用的是Nginx免费防火墙,然后打开这个插件。设置GET-URL过滤设置一条简单的宝塔面板的正则规则就可以屏蔽...

蜘蛛人再捞4千万美元 连续三周蝉联北美票房冠军

7月15日讯老马追踪票房数据的北美院线联盟今天表示,“蜘蛛人:离家日”(Spider-Man:FarFromHome)击退两部新片的挑战,连续第2周勇夺北美票房冠军,海捞4530万美元。法新...

夏天到了,需要提防扁虱,真是又小又恐怖的动物

夏天马上要到了,你知道吗,扁虱是这个夏天最危险的动物之一,很少有动物能比它还凶猛。Whenitcomestosummer'slittledangers,fewarenastiert...