你学习 Python 的时候,用到舒服姿势了么?

学习python的正确姿势

共 2290字,需浏览 5分钟

 ·

2021-05-24 17:41

你在学习和使用 Python 的时候,可能会遇到这么些情况:

刚学 Python 语句的时候,不知道它的运行原理是怎样的?

报错了一顿重启,能跑就行?

学习知识点的时候,没有「做好姿势」?

要不我们来模拟一下,在学习一个 Python 知识点的过程中,怎么样才能让你觉得更好玩,或者说怎么样的学习姿势才能让你舒服点?

请对号入座,走起!

比如,你在写函数、调用函数的时候,是不是在给函数传递参数的时总是那么的「理所当然」,可有时候又会觉得「不可思议」?

举一个简单的例子:

像这样一个简单的函数调用:

你觉得此刻输出的结果是多少?

答案是 1 ,你(假设你刚学 Python 不久)可能会感到困惑。

这不是调用了 add 方法,给他丫的加一了么?结果不应该是 2 吗?

你先别急,我们再来看看这个:

你觉得此刻输出的结果又是多少?

经过上次的「经验」,我猜你此时认为输出结果就是 [1, 2, 3],但不好意思,这次输出的结果是 [1, 2, 3, 6]。

想不到吧?



我想你在学习 Python 的过程中,像以上出现类似的困惑还有很多很多...

那如果现在把代码执行的每个步骤都清晰地、可视化地给你看清楚,又会是一种什么样的效果呢?

我们不妨来试试第一段代码:

从第一行开始运行,我们定义了一个名为 add 的函数,add 函数定义了一个参数 x:

接着执行 a=1, 现在内存开辟了一个空间,存放对象 1,变量 a 指向了对象 1:

下一步就是调用 add(a) 方法了:

add 方法中执行了 x += 1 操作,此时方法中 x 指向对象 2:

那我们现在 print(a), a 还是指向 1,所以结果是 1。

我们再来看第二段代码:

代码看似差不多,只不过这里是把参数的数据类型换成了列表。

从第一行开始运行,我们定义了一个 add 函数,add 函数定义了一个参数 x:

接着执行 a = [1, 2, 3],现在内存开辟了一个空间,存放对象 [1,2,3],变量 a 指向了这个 list 对象:

下一步就是调用 add(a) 方法了 ( 此时 x 指向了 list?):

add 方法中执行了append 操作,list 变成了 [1,2,3,6]:

可以看到现在 a 指向的是对象 [1,2,3,6],所以 print(a) 输出结果就是 [1,2,3,6]。

嗯,你看到区别了。

为嘛?当参数是 1 的时候,调用 add 方法是这样的:

而当参数是列表时,调用 add 方法是这样的:

你很想知道为什么会这样,于是开始搜索了一波数据类型的区别:

接着你看到了这玩意:

你发现 Number 是不可变数据,List 是可变数据。

通过搜索可变类型和不可变类型的区别,你慢慢的就明白了:

因为 Number 是不可变的,所以你开始执行 a = 1 的时候,开辟出来的内存用来存放对象 1 ,由于这里的 1 是不可变的,所以在调用 add 方法时,就又会开辟一个新的空间来创造新的内存地址给 x 引用。

而 List 是可变的,当调用 add 方法时,不需要再开辟新的内存空间了,x 可以直接指向 list,此时 x 做了 append 操作,list 变成了 [1,2,3,6],a 指向的也是它。

发现了么?整个过程中,你就好像在玩一样,没有什么所谓的「学习的痛苦」。

你自己通过「发现问题——找到关键点——很想弄明白——搜索——结合自己的问题找到答案」,就把一个小知识点掌握了。

如果下次面试被问到这相关的问题,你的脑子马上就会浮现出来这两张当时令你困惑的图片:

那么你肯定能对着面试官滔滔不绝,整个思路也相当清晰。

学习的「舒服姿势」

在我看来,整个学习的过程中,更多的是自己「主动」起来,才能体会到那种高效,舒服。

也许有些事情别人可以手把手的教你操作,但这是有局限性的,而且自己也会显得很是被动,没有什么比自己通过阅读,通过探索,通过实践而掌握的技巧更让人舒服了。

我之前在公众号安利过不少好用的「工具」,有人问我说,你是如何发现那么些好用的工具的?我想说的是,如果你真的想知道它们,你就一定会发现它们的,只是时间的问题,因为这和你的「主动」想要高效有关。

比如我刚刚给你演示的这个可视化代码执行流程:


这玩意在这:

pythontutor.com

这也是之前我在查阅资料,翻博客,不经意间发现的。

另外,使用「图像具像化」也是我常用的「姿势」,我有时候遇到一些难题或者困惑,我会使用图像的方式把它们表达出来,相比于文字,可以很清晰的看到问题的关键点,降低了不少难度,并且解决完问题之后,过一阵子再看到类似的问题,还能够想到当初解决的思路,我想这可能是图像的记忆比较深刻。你下次遇到问题的时候,不妨试试这招。

还有关于搜索能力这个我就不多说了,之前也分享过不少技巧,你可以去公众号搜一下。

OK,以上就是小帅b今天给你带来的分享,希望你可以主动地通过工具的使用,阅读的习得,问题的具像,搜索的能力,找到你最「舒服的姿势」。

ps:公众号最近做迁移,没想到这过程中还给我整了点幺蛾子,所以留言还是得再等等了。哦对了,一直肝原创不容易呀,觉得对你有帮助的话,记得多多支持小帅b,能赞赏的赞赏,不能赞赏的转发一下,满满的动力呀,谢谢,爱你哟~那么我们下回见啦,peace!

浏览 15
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报