初学者必看!盘点5个Python使用常见错误

我是黄勇,一名大厂内训专家,曾为网易、360、华为等多家企业员工提供Python培训;曾使用Python开发过多个大型企业网站,从零打造分布式爬虫架构,目前专注于python领域的课程研发和教学工作。

如今的职场上,10个人里大约有7个动过学Python的念头,3个能付诸行动,1个能坚持学习完基础,最后能理直气壮的说出“我会用Python!”的人,emmm……不用我多说了吧。

当然,失败率高并不代表大家缺少毅力,而是Python入门的路上,坑真的是太太太太多了!所以今天,我把Python入门中出现频率最高的5个问题分享给大家。(通过学习路上的清障,能留住几个同学坚持学下去也是好的~)

敲黑板!!!该记笔记了↓↓↓

1

缩进

Python每缩进一层代表形成了一个独立的代码块,非常严格。比如:

但是很多同学在用缩进的时候,经常会出现这个问题:

这种错误就是在写缩进代码的时候,既使用了tab键,又使用了空格键,所以才导致的问题。因此我们在缩进的时候,要么全部使用tab键,要么全部使用空格键。PEP8规范要求全部使用空格键,并且每层缩进使用2个空格,这个就要看每个公司的规范了。

2

try...finally + return

try...finally是用来捕获异常,并且不管有没有异常发生,都会执行finally中的代码。这样看起来会比较好理解,但是如果加上return语句,可能就会发生意想不到的事情。

猜想一下以上代码会输出什么?是不是觉得应该输出的是1和2?,但实际上,以上代码输出结果是1,3,2!为什么?首先看下Python中的官方解释:

翻译成中文的意思就是,如果try中包含了break、continue、return语句,在离开try块之前,会优先执行finally中的代码,然后才会执行return语句。这样就能理解,为什么结果是1,3,2了。知道这个结果的你,是不是有种豁然开朗的感觉。

3

可变容器作为函数默认值

当我们在函数中使用了列表、字典等可变容器类型作为参数默认值的时候,会很容易出现问题。

我们可以看到,test()函数每执行一次,param这个列表中的值都会加1,这是因为默认参数会存储在函数的一个叫做__defaults__属性中,这个属性是函数属性,每次执行都是同一个对象,因此每次执行,param都会加一个新元素,并且还会保留之前添加的元素。正确的做法应该是把默认值设置成None,或者设置成不可变的数据类型,比如元组。

4

for...else...

这个语法可以说是Python独有的,他的作用是在for循环中每一项都循环到了,就会执行else,否则就不会执行else。举个例子:

因为0...9的所有数字都小于18,所以不执行到break,也就range中的每一项都执行到了。这时候就会执行else语句。但是如果我们把a改成8,就不会执行else中的语句了,这个大家可以自行尝试。

5

Python闭包的变量

先来看以下代码:

我们期望的结果应该是0,1,4,但实际上是16,16,16。原因是Python中的惰性求值。惰性求值,也就是延迟求值,表达式不会在它被绑定到变量之后就立即求值,而是等用到时再求值。x 实际不在 lambda 的作用域中。只有当 lambda 被调用时,x 的值才会被传给它。也就是最后的一次循环中 x 为 4,后面的 ls[1],ls[1],ls[2],ls[3]实际都是 16。

这5个问题是对于Python学习者来说就像“鬼打墙”,明明都是按部就班的写代码,可结果就是不对。出现这些问题,归根结底还是基础知识没学好。我见过很多这样的同学:自己对爬虫感兴趣,上来就要学爬虫,完全不考虑基础语法,这样出现“鬼打墙”的问题也就不奇怪了。

小白学Python,我推荐你参考这个学习路径,知识点由浅入深,循序渐进,可以帮助你轻松完成Python入门到进阶。

↓↓↓扫码跟我学↓↓↓

小白和初学者都可以无压力学习,从Python编程基础,到热门应用(数据分析、数据挖掘、爬虫、机器学习)全面覆盖,另外还包含了100道大厂面试真题。

推荐理由:

  • 本课程分为7个大课程方向,共计623节视频课,涵盖10个企业级项目实战和50个练习案例,能够帮助你建立完整知识体系,同时具备独立实操能力。

  • 近13万学习者亲测有效,他们之中有编程小白,有转行的程序员,有准备从事数据分析、人工智能等等岗位。无论你之后想从事 Python 的哪个应用方向,该掌握的在这里都能学到。

  • 师资有保障。本课程的授课讲师包括我在内共7位,全部是来自阿里、网易、华为、360等企业的Python讲师,并且均有着超10年以上的实战开发经验。

  • 价格超优惠。原价1253元,今天只要198元7位Python名师指导课打包带回家!

课程还设置了线上答疑,你在学习中遇到任何问题,都可以随时在社群中发问,这样一来,你在学习Python时,遇到诸如前面提到的实际问题,都可以轻松解决。

课程最适合哪些人学习?

  • 准备从事编程工作,但是不知道选择什么语言好

  • Python应用方向太多了,不知道该学哪个才适合自己

  • 准备从事Python开发,不知道怎么学,也没人带

  • 有一定的Python基础,但缺乏系统的学习,没有完整的知识框架

课程最适合哪些人学习?

  • CSDN价值100元现金券(购课后根据指引进群领取)

  • 随课赠送价值2000元的Python学习视频

⚠️⚠️⚠️ 友情提醒

线下5位数,线上1000多的课程

年初特惠,到手仅需198

(购课免费领价值2000元礼包)

点击 "阅读原文 "

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值