Python 研究(Dive Into Python)笔记1--第2章 第一个 Python 程序

悲剧了,发现这本书有更新的网络版本

深入 Python 3

http://woodpecker.org.cn/diveintopython3/

果断舍弃这个系列,从头再来

2.2. 函数声明

首先, 函数声明以关键字 def 开始, 接着为函数名, 再往后为参数, 参数放在小括号里。 多个参数之间 (这里没有演示) 用逗号分隔。

其次, 函数没有定义返回的数据类型。 Python 不需要提定返回值的数据类型;甚至不需要指定是否有返回值。实际上, 每个 Python 函数都返回一个值;如果函数执行过 return 语句, 它将返回指定的值, 否则将返回 None ( Python 的空值) 。

最后需要指出的是, 在 Python 中参数, params 不需要指定数据类型。 Python 会判定一个变量是什么类型, 并在内部将其记录下来。

所以说 Python 既是 动态类型定义语言 (因为它不使用显示数据类型声明) , 又是 强类型定义语言 (因为一旦一个变量具有一个数据类型, 它实际上就一直是这个类型了) 。

2.3. 文档化函数

三重引号表示一个多行字符串。在开始与结束引号间的所有东西都被视为单个字符串的一部分, 包括硬回车和其它的引号字符。您可以在任何地方使用它们, 但是您可能会发现它们经常被用于定义 doc string 的情况。

三重引号也是一种定义既包含单引号又包含双引号的字符串的简单方法

2.4. 万物皆对象

2.4.1. 模块导入的搜索路径

当导入一个模块时, Python 在几个地方进行搜索。 明确的, 它会按所有定义在 sys.path 中的目录进行搜索。它只是一个list (列表), 您可以容易地查看它或通过标准的list方法来修改它。

2.5. 代码缩进

Python 函数没有明显的 begin 和 end, 没有花括号, 用于标函数的开始和结束。 唯一的分隔符是一个冒号 (:), 接着代码本身是缩进的。

代码块通过它们的缩进来定义的。我所说的 "代码块" 是指:函数、if 语句、for 循环、while 循环, 等等。开始缩进表示块的开始, 取消缩进表示块的结束。不存在明显的括号, 大括号或关键字。这就意味着空白是重要的, 并且要一致。在这个例子中, 函数代码 (包括 doc string) 缩进了 4 个空格。不一定非要是 4, 只要一致就可以了。没有缩进的第一行则在函数体之外。

2.6. 测试模块

那么为什么说这个特殊的 if 语句是一个技巧呢?模块是对象, 并且所有的模块都有一个内置属性 __name__。一个模块的 __name__ 的值要看您如何应用模块。如果 import 模块, 那么 __name__ 的值通常为模块的文件名, 不带路径或者文件扩展名。但是您也可以像一个标准的程序一样直接运行模块, 在这种情况下 __name__ 的值将是一个特别的缺省值, __main__。

一旦了解到这一点, 您可以在模块内部为您的模块设计一个测试套件, 在其中加入这个 if 语句。当您直接运行模块, __name__ 的值是 __main__, 所以测试套件执行。当您导入模块, __name__ 的值就是别的东西了, 所以测试套件被忽略。这样使得在将新的模块集成到一个大程序之前开发和调试容易多了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章