练习 20 Learn Python 3 The Hard Way

哈哈我是不会轻易发红包的,勤劳的ai酱又来更新啦~

上节课我们学习了练习 19 函数与变量的几种不同赋值方式。这节课我们继续学习函数和文件的一些操作。

练习 20 函数和文件

在做练习之前,最好先回忆一遍咱们的函数 checklist,敲代码的时候尽量不要看一个字符敲一个字符,努力看一行,敲一行,自己在脑子里面思考每一行都需要哪些元素,需不需要缩进等等。同时,在做这个练习的时候,我们可以着重注意一下函数是如何和文件一起工作并发挥作用的。

ex20.py

输完代码先自己运行一下,看能不能成功。再强调一遍,注意哪里需要缩进!以及第 3行代码表明这个脚本在命令行运行的时候不仅要输入脚本文件名,还要输入一个文本文件(本例中可以用 test.txt)。

你会看到练习 20 结果

如果脚本成功运行了,但文件内容部分不一样,很可能是你的 test.txt 文件内容跟老肖的不一样,你可以打开你的 test.txt 文件,把内容替换成:

也可以不用管,只要确保你自己的输出跟你的文件内容一致就行。

现在你可能还不知道整个脚本是如何运行的,不用担心,做完下面的附加练习你就知道了。

附加练习

在每一行上方添加注释解释它的作用。(如果有不明白的地方,可以把后面的附加练习和常见问题看完,有些问题老肖做了解释,看完你会更明白有些命令/函数的作用。ai酱再补充一个小点:rewind 这个单词的意思是“回放”。)

每次 运行的时候,你都在传入一个 变量。写出每一次调用函数的时候 等于什么,然后找出它是如何变成 里面的 的。

找出每一个用到函数的地方,然后检查它的 确保你给出了正确的参数。

在网上搜搜 这个函数的作用。试着输入 ,看看你能否从这里看明白。然后试着输入 再看看 是用来干嘛的。

搜一下简化符号 ,然后用 重新写这个脚本。

常见问题

在 和其他函数里的 是什么东西?是一个变量,就像你在练习 18 中函数的变量一样,只不过这次它是一个文件。文件在 Python 里面有点类似于一个老式电脑里面的磁带驱动器,或者一个 DVD 播放机。它有一个“读取头”(read head),你可以在文件里 (寻找)这个读取头所在的位置,然后在那里工作。每次你做 的时候你都会从移动到文件最开始,每次你做 的时候,你都在从文件里读取一行内容,并且把读取头移动到 后面,也就是每行结束的地方。 我会在后面给你做更详细的解释。

为什么 没有把 设置为 0?首先, 函数处理的是字节(bytes),不是行。 这个代码把文件移动到 0 字节(也就是第一个字节处)。其次, 只是一个变量并且跟这个文件没有任何实际联系。我们是在手动累加它。

什么是 ?你知道在英语里我们可以把 “it is” 写成 “it's” ,或者把 “you are” 写成“you're” ,这叫缩写(contraction)。而 就像 和 两种运算的缩写。也就是 就等同于 。

是怎么知道每一行在哪儿的?里面的代码能够扫描文件的每个字节,当它发现一个 字符,它就会停止扫描这个文件,然后回到它发现的地方。文件 就负责在每次调用 之后维持文件的当前位置,以此来保证它能阅读到每一行。

为什么文件中的行之间会有空行?函数返回文件中每行最后的 。又在 函数的结尾加上一个 来避免给每行加上两个 。

ai酱注:如果你在添加注释的时候卡壳了,证明你还是没有弄明白这些函数、参数、变量之间的运行关系,好好琢磨琢磨,捋一捋思路,最好边想边说,这样可以让思路更清晰一些。虽然老肖在附加练习中没有做要求,但是如果你搞明白了这个例子,可以试着照葫芦画瓢,弄几个自己的函数试试看能不能成功运行。

实在搞不明白的话,欢迎在留言区、后台以及群里提问哦~

好了,今天就学到这儿咯~

好好学习|天天进步

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180129G1BNQG00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券