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

数据分析学习社
数据分析学习社
数据分析学习社
348
文章
0
评论
2021-06-0710:22:30 评论 155 1847字
摘要

你在学习和使用 Python 的时候,可能会遇到这么些情况:刚学Python语句的时候,不知道他的运行原理是怎样的?报错了一顿重启,能跑就行?学习知识点的时候,没有【做好姿势】?

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

请对号入座,走起!

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

举一个简单的例子:

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

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

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

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

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

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

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

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

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

想不到吧?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

我们再来看第二段代码:

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

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

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

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

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

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

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

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

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

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

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

嗯,你看到区别了。

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

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

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

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

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

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

接着你看到了这玩意:

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

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

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

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

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

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

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

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

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

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

学习的「舒服姿势」

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

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

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

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

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

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

 

End.

作者:小帅b

转载如果涉及作品、版权其他问题请联系我们第一时间删除微信号:lovedata0520)

更多文章前往首页浏览http://www.itongji.cn/

  • 我的微信公众号
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: