我是黄勇,一名大厂内训专家,曾为网易、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元礼包)
点击 "阅读原文 "