2.2. 函数声明

与其它大多数语言一样 Python 有函数, 但是它没有像 C++ 一样的独立的头文件;或者像 Pascal 一样的分离的 interface/implementation 段。 一旦需要函数时, 像下面这样声明即可:


def buildConnectionString(params):

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

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

注意
Visual Basic 中, 函数 (有返回值) 以 function 开始, 而子程序 (无返回值) 以 sub 开始。在 Python 中没有子程序。只有函数, 所有的函数都有返回值 (尽管可能为 None) , 并且所有的函数都以 def 开始。

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

注意
Java, C++ 和其他静态类型语言中, 必须要指定函数返回值和每个函数参数的数据类型。 在 Python 中, 永远也不需要明确指定任何东西的数据类型。Python 会根据赋给它的值在内部将其数据类型记录下来。

2.2.1. Python 和其他编程语言数据类型的比较

一位博学的读者发给我 Python 如何与其它编程语言的比较的解释:

静态类型定义语言
一种在编译期间数据类型固定的语言。大多数静态类型定义语言是通过要求在使用所有变量之前声明它们的数据类型来保证这一点的。 JavaC 是静态类型定义语言。
动态类型定义语言
一种在运行期间才去确定数据类型的语言, 与静态类型定义相反。 VBScriptPython 是动态类型定义的, 因为它们确定一个变量的类型是在您第一次给它赋值的时候。
强类型定义语言
一种总是强制类型定义的语言。 JavaPython 是强制类型定义的。您有一个整数, 如果不明确地进行转换 , 不能将把它当成一个字符串。
弱类型定义语言
一种类型可以被忽略的语言, 与强类型定义相反。 VBScript 是弱类型定义的。在 VBScript 中, 您可以将字符串 '12' 和整数 3 进行连接得到字符串'123', 然后可以把它看成整数 123 , 所有这些都不需要任何的显示转换。

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