你学习 Python 的时候,用到舒服姿势了么?
你在学习和使用 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!