习题 2: 注释和井号 ***************************************** 程序里的注释是很重要的。它们可以用自然语言告诉你某段代码的功能是什么。在你想要临时移除一段\ 代码时,你还可以用注解的方式将这段代码临时禁用。接下来的练习将让你学会注释: .. literalinclude:: ex/ex2.py :language: python :linenos: 从现在开始,我将用这样的方式来写代码。我一直在强调“完全相同”,不过你也不必按照字面意思理解。\ 你的程序在屏幕上的显示可能会有些不同,不过重要的是你在文本编辑器中输入的文本的正确性。事实上,\ 我可以用任何编辑器写出这段程序,而且内容是完全一样的。 你应该看到的结果 =================== .. literalinclude:: ex/ex2.txt :language: console 再次说明,我不会再贴各种屏幕截图了。你应该明白上面的内容是输出内容的字面翻译,而 ``$ python ...`` 和最后的 ``$`` 之间才是你应该关心的内容。 加分习题 ============ 1. 弄清楚"#"符号的作用。而且记住它的名字。(中文为井号,英文为 octothorpe 或者 pound character)。 2. 打开你的 ``ex2.py`` 文件,从后往前逐行检查。从最后一行开始,倒着逐个单词单词检查回去。 3. 有没有发现什么错误呢?有的话就改正过来. 4. 朗读你写的习题,把每个字符都读出来。有没有发现更多的错误呢?有的话也一样改正过来。 常见问题回答 ========================== 你确定 `#` 符号的名称是 pound character? 我叫它 octothorpe,这个名字没有哪个国家在用,不过所有的人都能看懂它的意思。每个国家都 觉得他们的叫法最正确最闪亮。对我来说这是自大狂的想法,而且你也没必要去关心这种细枝末节, 学习编程才是更重要的事情。 如果 `#` 是注解的意思,那么为什么 ``# -*- coding: utf-8 -*-`` 能起作用呢? Python 其实还是没把这行当做代码处理,这种用法只是让字符格式被识别的一个取巧的方案, 或者说是一个没办法的办法吧。在编辑器设置里你还能看到一个类似的注解。 为什么 ``print "Hi # there."`` 里的 `#` 没被忽略掉? 这行代码里的 `#` 处于字符串内部,所以它就是引号结束前的字符串中的一部分,这时它只是 一个普通字符,而不代表注解的意思。 怎样做多行注解? 每行前面放一个 `#` 就可以了。 我们国家的键盘上找不到 `#` 字符,怎么办? 有的国家要通过 Alt 键组合才能输入这个字符。你可以用搜索引擎找一下解决方案。 为什么要让我倒着阅读代码? 这样可以避免让你的大脑跟着每一段代码内容的意思走,这样可以让你精确处理每个片段,从而 让你更容易地发现代码中的错误。这是一个很好使的查错技巧。