37 题的其他符号有关的内容大多数之前都是学习过的,所以就不在发文来说了,而 38 读代码 更是一个需要自己线下完成的内容,因此也没必要单独拿出来写答案。
于是乎,一下子就来到了 39 题。
题目
本题的练习应该归类为复习和实践,在 32: 循环和列表 中我们了解了列表包含的方法,知道了 append
方法可以做到什么事情,Zed 建议我们复习之后进行本题的练习。
另外,他还为我们介绍了当执行 mystuff.append('hello')
时发生了什么:
- Python 看到你用到了
mystuff
,于是就去找到这个变量。也许它需要倒着检查看你有没有在哪里用 = 创建过这个变量,或者检查它是不是一个函数参数,或者看它是不是一个全局变量。不管哪种方式,它得先找到mystuff
这个变量才行。- 一旦它找到了
mystuff
,就轮到处理句点.
(period) 这个操作符,而且开始查看mystuff
内部的一些变量了。由于mystuff
是一个列表,Python 知道mystuff
支持一些函数。- 接下来轮到了处理
append
。Python 会将 “append” 和mystuff
支持的所有函数的名称一一对比,如果确实其中有一个叫 append 的函数,那么 Python 就会去使用这个函数。- 接下来 Python 看到了括号
(
(parenthesis) 并且意识到, “噢,原来这应该是一个函数”,到了这里,它就正常会调用这个函数了,不过这里的函数还要多一个参数才行。- 这个额外的参数其实是……
mystuff
! 我知道,很奇怪是不是?不过这就是Python 的工作原理,所以还是记住这一点,就当它是正常的好了。真正发生的事情其实是append(mystuff, 'hello')
,不过你看到的只是mystuff.append('hello')
。
对于这个过程的了解会有助于理解 python 的错误信息。虽然我们还没有学习“类”