Python新手容易犯的4个错

Python新手踩坑实录:这些错误你可能正在犯 每个错误都是学习的机会。本文列举的错误,大多数作者都亲身经历过。保持耐心:调试是编程的重要组成部分善用工具:IDE、调试器、静态分析工具阅读文档:官方文档是最可靠的资源编写测试:TDD能预防许多错误代码审查:他人的视角能发现你忽略的问题记住,没有愚蠢的问题,只有未被问出的问题。随着经验积累,你会逐渐减少这些错误,但永远不要停止学习。编程的乐趣正在于不断解决问题,包括那些你自己制造的问题。 阅读详情

python语言里面有一些小的坑,特别容易弄混弄错,初学者若不注意的话,很容易坑进去,下面我给大家深入解析一些这几个坑,希望对初学者有所帮助.

1.i+=1 不等于++i
初学者对Python语言不是特别了解的话,又正好有c++,java的语言背景,很容易把++i和i+=1弄混
先来看一个小例子:
i=0
mylist=[1,2,3,4,5,6]
while i <len(mylist):
print(mylist[i])
++i
这段代码会想当然的认为,没有啥问题啊,一个循环输出,i不断的+1,蛮对的呀.其实不是的,这个代码会一直输出1,一个死循环.因为Python的解释器会将++i操作为+(+i).其中+表示是正数符号,对于–i也是类似的.
print(+1)

>>>1

print(++1)

>>>1

print(+++1)

>>>1

这下明白了++i虽然在Python语法是合法的,但是并不是我们理解的自增的操作.这里多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以进裙六零九六一六八三一领取。

2.分清楚==和is的用法

在判断字符串是否相等的时候,初学者特别会弄混is和==,这样的结果是程序在不同的情况下表现不同:
比如先看一个简单的例子:
a=‘Hi’
b=‘Hi’
print(a is b)

>>>True

print(a==b)

>>>True #看起来is和==好像是一样的

我们再看第二个例子:
str1=‘Wo shi yi ge chi huo’
str2=‘Wo shi yi ge chi huo’

print(str1 is str2)

>>>False#is的结果是False

print(str1==str2)

>>>True #==的结果为True,看二者不一样了吧

第三个例子
str3=‘string’
str4=’’.join([‘s’,‘t’,‘r’,‘i’,‘n’,‘g’])
print(str3)

>>>string

print(str3 is str4)

>>>False #is的结果是False

print(str3==str4)

>>>True #==的结果为True,看二者不一样了吧

这就是很容易混淆初学者的地方,感觉很奇怪,为什么有的时候is和==输出相同,有的时候不同呢.好我们来一探究竟:
我们用内置的id()这函数,这个函数用来返回对象的内存地址,查一下就清楚了
在这里插入图片描述

is是对象的标示符,用来比较两个对象的内存空间是不是一样,是不是用的同一块空间地址,而==是比较两个对象的内容是否相等.
3.连接字符串特别是大规模的字符串,最好用join 而不是+
字符串处理的时候,最常用的是连接,Python中的字符串与其他的语言有一点不同,它是不可变对象,一旦创建不能改变.而这个特性直接会影响到Python中字符串连接的效率.

用+连接字符串:
str1,str2,str3=‘test’,‘string’,‘connection’
print(str1+str2+str3)

>>>test string connection

用join连接字符串
str1,str2,str3='test ',‘string ‘,‘connection’
print(’’.join([str1,str2,str3]))

>>>test string connection

但是若是连接大规模的字符串,比如要连接10万左右的字符串的时候,join的方法效率就会快很多(甚至相差百倍).比如下面这10万个字符串连接.
long_str_list=[‘This is a long string’ for n in range(1,100000)]

原因是因为若要连接字符串:S1+S2+S3+…+SN,由于字符串是不可变的对象,执行一次就要申请一块新的内存,这样的话在N个字符串连接的过程中,会产生N-1个中间结果,每产生一个中间结果就要申请一次内存,这样会严重影响执行效率.
而join不一样,它是一次性申请总的内存,然后把字符串里面的每一个元素复制到内存中去,所以join会快很多.

因此,字符串的连接,尤其是大的字符串处理,最好用join

4.不要在for 和while 循环后面写else 块
Python 提供了一种很多编程语言都不支持的功能,那就是可以在循环内部的语句块后面直接编写else 块。比如:
for i in range(3):
print(‘Loop %d’%i)
else:
print(‘Else block’)

>>>Loop 0

>>>Loop 1

>>>Loop 2

>>>Else block

这种else 块会在整个循环执行完之后立刻运行。既然如此,那它为什么叫做else 呢?为什么不叫and ?在if/else 语句中,else 的意思是:如果不执行前面那个if 块,那就执行else 块。

同理try/except/else 也是如此,该结构的else 的含义是:如果前面的try 块没有失败,那就执行else 块。
try/finally 同样非常直观,这里的finally 的意思是:执行过前面的try 块之后,不管如何总是执行finally块。

问题来了对于刚接触Python 的程序员可能会把for/else 结构中的else 块理解为:如果循环没有正常执行完,那就执行else 块。
实际上刚好相反——在循环里用break语句提前跳出,会导致程序不执行else 块,这一点会有点绕.对于不熟悉for/else 的人来说,会令阅读代码的人感到相当费解.最后多说一句,想学习Python可联系小编,这里有我自己整理的整套python学习资料和路线,想要这些资料的都可以进q裙六零九六一六八三一领取。

RTL8306MB交换芯片驱动开发避坑指南:从硬件接线到SDK移植全流程解析 本文详细解析了RTL8306MB交换芯片驱动开发的全流程,重点从硬件接线、SDK移植到实战调试。针对RMII模式下的常见问题,特别是TXEN与RXDV信号交叉连接等关键“坑点”,提供了清晰的排查指南和解决方案,旨在帮助嵌入式工程师高效完成网络设备开发。 阅读详情

相关推荐

Monocle2拟时轨迹基因模块的GO富集解析

本文详细解析了如何对Monocle2拟时分析中得到的基因表达模块进行GO富集分析。通过从热图对象中提取聚类模块,并利用clusterProfiler等工具进行功能注释,将抽象的基因表达时序模式转化为可解释的生物学功能主题,如免疫应答、细胞外基质组织等,从而深入理解细胞命运转变的驱动机制。

gpt4scribbler的博客 501

Python老手也会犯的20个新手级错误

作为这篇文章的重点,你应该永远记住,在大多数情况下,你想出的第一个解决方案并不是最优方案,因此,使用谷歌搜索总是有帮助的:),这也是为什么不完美主义的思维方式,对一名讲究的程序员非常重要的原因(不仅是Python,其它语言也一样)。在这篇文章中,我展示了20种不同场景,我相信大多数Python程序员都经历过这些情况,而且可能也采取了错误的编码解决方案,如果你注意到,在大多数情况下,优雅的写法主要侧重于避免使用 FOR 循环进行编码。正如前文讨论的那样,有经验的方式是使用切片,并将结果与原列表进行比较。

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 1万+

VScode中配置 C/C++ 环境,超级详细,问题分析全面,绝对好用

VScode中配置 C/C++ 环境,超级详细,问题分析全面,绝对好用 VScode中配置 C/C++ 环境 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 1. 下载编辑器VScode 1.官网:https://code.visualstudio.com/ 2. 安装VScode(建议附加任务全部勾选; 2. 下载编译器MinGW并解压 官网页面:https://www.mi

m0_46147064的博客 8万+

20个连熟练的Python程序员都会犯的新手错误

20个连熟练的Python程序员都会犯的新手错误 在Python中编码时应该避免的常见错误集合 编程(不仅仅是Python,还有任何编程语言)最好的一点是,通常有多种方法来实现同一个解决方案。 使用不同的方法来达到相同的输出 当然,有些方法比其他方法更好,这可能是由于各种原因,比如。 内存占用少 运行时间高效 更少的代码行数 容易理解 逻辑简单,等等。 在这篇文章中,我将向你介绍20种具体的情况,在这些情况下,Python程序员会不自觉地落入编写大量的、不优雅的、复杂的Python代码的陷阱--这最终使他

qq_40523298的博客 1037

用Python+OpenCV给斗地主做个‘外挂’:手把手教你写个桌面记牌器(附源码)

本文详细介绍了如何使用Python和OpenCV开发一个智能斗地主记牌器,包括环境搭建、图像采集与预处理、扑克牌识别技术及PyQt5界面设计。通过实战案例,帮助开发者掌握图像处理与界面开发的结合应用,提升游戏辅助工具的编写能力。

weixin_29079643的博客 549

C++版Cesium实战:从OpenGL到3DTiles的全流程开发指南

本文提供了一份C++版Cesium全流程开发指南,详细阐述了如何利用OpenGL和Qt从零构建高性能、可离线部署的三维GIS应用。内容涵盖开发环境搭建、OpenGL渲染引擎初始化、Cesium核心坐标系与场景管理移植,并重点解析了3DTiles数据的解析、异步加载与渲染优化等硬核实战技术,旨在帮助开发者实现与现有C++工业软件的深度集成。

weixin_28077113的博客 166

python怎么调用列表中的某个元素_Python 新手,最爱犯的就是这 4 个错误!

关注优达学城 Udacity,获取前沿科技干货作者:Eden Au 译者:欧剃“面对现实吧,学编程不能有小聪明。”上面这句话,有许多人觉得有道理。而我曾对它不屑一顾。这是因为,在学习各种不同的编程语言时,我总能发现一些微妙的方法,来完成我想做的任何事情。我曾认为我能掌控一切。然而我错了。你能在你的代码里做任何事,但你不应该任意乱来。我很快就意识到,我的那些“微妙”的操作其实都是些糟糕的垃圾代码。...

weixin_39688035的博客 1891

【电力系统】高压直流输电VSC-HVDC,四个变流站联合输电 / 交直流混合并网系统

本文研究了一种基于电压源型换流器(VSC)的高压直流输电(HVDC)系统,该系统通过四个变流站实现联合输电并接入交直流混合电网。文章介绍了系统的结构、工作原理以及控制策略,分析了交直流混合并网的特性,并通过仿真验证了系统的性能。结果表明,该系统具有良好的稳定性和灵活性,能够有效实现多点供电和功率协调。

2401_84610415的博客 2243

学python最重要的是_新手学Python容易犯的错,你掉过哪些坑

互联网的高速发展,吸引了许多人进入互联网工作,自学的也不少,遇到的问题也多,那么在学习Python的过程中掉过哪些坑?新手学Python容易犯的错有哪些?本文就学习Python,提醒新手们要注意避免的一些事情。虽然Python的语法比较简单易学,但一旦不注意细节,刚入门的新手很容易就会掉进语法错误的坑里。比如:1. 忘记写冒号在 if、elif、else、for、while、class、def 语...

weixin_39827728的博客 88

地平线旭日X3派(RDK X3)从开箱到联网:新手避坑指南

本文为地平线旭日X3派(RDK X3)新手提供从开箱到联网的完整避坑指南。详细讲解了硬件识别、系统镜像烧录、串口调试(波特率921600)、有线/无线网络配置以及SSH/VNC远程访问等关键步骤,帮助开发者快速搭建稳定的开发环境,为后续AI应用部署扫清障碍。

weixin_29174385的博客 956

【STM32】R05D电控红外协议的美的空调遥控器

目录一、设计思路一、R05D红外协议原理1.协议手册理解2.验证时序(重点)二、硬件实现1.需要的材料2.对发射模块电路进行修改3.STM32 GPIO选择三、代码实现1.载波38kHZ实现2.R05D时序实现3.调用函数并验证 一、设计思路 通常红外遥控采用NEC传输协议,而美的空调采用的是R05D红外协议(应该是自己设计的协议),因此用一般红外编码发射模块无法直接对空调进行控制。 解决方法:获取R05D协议手册 + 用红外接收管对原有遥控器红外接收进行波形分析。 一、R05D红外协议原理 R05D电控功

weixin_42204837的博客 1万+

python新手最容易犯的错误_转 python新手容易犯的6个错误

错误1: 缩进python是强制缩进的语言,很多同学在初次接触python时可能会不习惯,缩进老是犯错。比如Python 2.7.12 (default, Sep 17 2016, 13:47:40)[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.38)] on darwinType "help", "copyright", "credits...

weixin_39622901的博客 150

Tiktok/抖音旋转验证码

主要记录一下旋转验证码的逆向思路

记录一些web逆向的过程 5978

python复杂难学用_新手学习python容易犯的17个错

新手学习python容易犯的17个错

weixin_39668408的博客 84

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Python 新手最容易犯的错误!

一、画蛇添足:多余的分号 Python语言与大多数编程语言不相同,它的语句后面不需要加分号结尾。有些 Python 新手具有编写其它语言的丰富经验,一时还适应不过来,经常习惯性的加上“分...

Python研究所 448

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

几个关于python的问题_Python新手们容易犯的几个错误总结

前言这篇文章主要给大家总结了关于学习Python的新手们容易犯的几个错误,一共四个易犯错误,下面来看看详细的介绍吧。一、i+=1 不等于++i初学者对Python语言不是特别了解的话,又正好有c++,java的语言背景,很容易把++i和i+=1弄混先来看一个小例子:i=0mylist=[1,2,3,4,5,6]while i >>1print(++1)>>>1print(+++1)>>>1这下明白...

weixin_39722759的博客 126

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Python中通常不应该犯的7个错误

介绍 Python是一门相对容易掌握的语言,但是由于假设了很多事情,因此犯错误非常容易。 此外,这些错误可能会在很长一段时间内被忽略。 在我其他前四个菜鸟Python错误之前。 避免这些新手Python错误 他们可能会工作,但可能会更好。 今天,我将分享更多在Python 3.8中容易犯的错误。 №1:+ = 在许多情况下,我当然会犯的一个错误是获取+ =操作数。 假设必须用两个独立的操作数来...

weixin_46606335的博客 605

形象解释 Python 新手最容易犯的错误

一、画蛇添足:多余的分号 Python语言与大多数编程语言不相同,它的语句后面不需要加分号结尾。有些 Python 新手具有编写其它语言的丰富经验,一时还适应不过来,经常习惯性的加上“分号”: a=5#正确 a=5;#错误 二、附赘悬疣:无用的小括号 在Python中,if/witch语句的表达式部分并不需要加小括号(虽然加上程序仍可运行),与很多编程语言不同。 ifa>b:#正确 print(a) if(a>b):...

436

「踩坑日记」:Python新手最容易犯的10个错误

作为一个Python新手,踩坑是不可避免的。通过了解这些常见错误,你可以避免很多不必要的麻烦,提高学习效率。记住,编程是一个不断学习和实践的过程。不要害怕犯错,每一个错误都是学习的机会。通过不断地实践和总结,你会逐渐掌握Python的精髓。保持学习,保持输出。虽然现在我还是个菜鸡,但我相信只要坚持,总有一天能成为真正的「第一程序员」!

no1coder的博客 1万+

python的append和for一起容易出错_Python 新手,最爱犯的就是这 4 个错误!

作者:Eden Au 译者:欧剃“面对现实吧,学编程不能有小聪明。”上面这句话,有许多人觉得有道理。而我曾对它不屑一顾。这是因为,在学习各种不同的编程语言时,我总能发现一些微妙的方法,来完成我想做的任何事情。我曾认为我能掌控一切。然而我错了。你能在你的代码里做任何事,但你不应该任意乱来。我很快就意识到,我的那些“微妙”的操作其实都是些糟糕的垃圾代码。但明明能得出正确的运行结果,为啥说是垃圾代码呢...

weixin_39945475的博客 1215

Python新手最容易犯的4个错误,我来帮你避免!

python语言里面有一些小的坑,特别容易弄混弄错,初学者若不注意的话,很容易坑进去,下面我给大家深入解析一些这几个坑,希望对初学者有所帮助. 1.i+=1 不等于++i 初学者对Python语言不是特别了解的话,又正好有c++,java的语言背景,很容易把++i和i+=1弄混 先来看一个小例子: i=0 mylist=[1,2,3,4,5,6] while i <len(myl...

DLQFHL的博客 337

python判断正确错误_Python新手入门最容易犯的错误总结

前言Python 以其简单易懂的语法格式与其它语言形成鲜明对比,初学者遇到最多的问题就是不按照 Python 的规则来写,即便是有编程经验的程序员,也容易按照固有的思维和语法格式来写 Python 代码,之前小编给大家分享过了一篇《Python新手们容易犯的几个错误总结》,但总结的不够全面,最近看到有一个外国小伙总结了一些大家常犯的错误,16 Common Python Runtime Error...

weixin_39791225的博客 202

java和python同时学会弄混吗_Python新手们容易犯的几个错误总结

前言这篇文章主要给大家总结了关于学习Python的新手们容易犯的几个错误,一共四个易犯错误,下面来看看详细的介绍吧。一、i+=1 不等于++i初学者对Python语言不是特别了解的话,又正好有c++,java的语言背景,很容易把++i和i+=1弄混先来看一个小例子:i=0mylist=[1,2,3,4,5,6]while i >>1print(++1)>>>1print(+++1)>>>1这下明白...

weixin_39996798的博客 386

python新手最容易犯的错误_Python新手最容易犯的十大错误

1. 忘记写冒号在 if、elif、else、for、while、class、def 语句后面忘记添加“:”if spam == 42print('Hello!')2. 误用 “=” 做等值比较“=”是给变量赋值,“==”才是判断两个值是否相等:score = 60if score = 60:print ('passed')改正:score = 60if score == 60:print ('p...

weixin_39927378的博客 156

python分几个阶段呢_Python新手们容易犯的几个错误总结

前言这篇文章主要给大家总结了关于学习Python的新手们容易犯的几个错误,一共四个易犯错误,下面来看看详细的介绍吧。一、i+=1 不等于++i初学者对Python语言不是特别了解的话,又正好有c++,java的语言背景,很容易把++i和i+=1弄混先来看一个小例子:i=0mylist=[1,2,3,4,5,6]while i >>1print(++1)>>>1print(+++1)>>>1这下明白...

weixin_39683769的博客 191
上一篇: 为什么创业公司要用 Python?
下一篇: 30 个Python代码实现的常用功能,精心整理版
python阿喵
博客等级 码龄6年 169粉丝 127原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值