一、函数定义和声明
在某些编程语言里, 函数声明和函数定义区分开的。一个函数声明包括提供对函数名,参数的名字(传统上还有参数的类型), 但不必给出函数的任何代码, 具体的代码通常属于函数定义的范畴。在声明和定义有区别的语言中, 往往是因为函数的定义可能和其声明放在不同的文件中。 python将这两者视为一体,函数的子句由声明的标题行以及随后的定义体组成的。
二、函数属性
你可以获得每个 pyhon 模块,类,和函数中任意的名字空间。你可以在模块 foo 和 bar 里都有名为 x 的一个变量,,但是在将这两个模块导入你的程序后,仍然可以使用这两个变量。所以,即使在两个模块中使用了相同的变量名字,这也是安全的,因为句点属性标识对于两个模块意味了不同的命名空间。
三、传递函数
函数有一个独一无二的特征使它同其他对象区分开来,那就是函数是可调用的。因为所有的对象都是通过引用来传递的,函数也不例外。当对一个变量赋值时,实际是将相同对象的引用赋值给这个变量。如果对象是函数的话,这个对象所有的别名都是可调用的。
当我们把 foo 赋值给 bar 时,bar 和 foo 引用了同一个函数对象,所以能以和调用 foo()相同的方式来调用 bar()。确定你明白"foo"(函数对象的引用)和"foo()"(函数对象的调用)的区别。
>>> def foo():
... print 'in foo()'
...
>>> bar = foo
>>> bar()
in foo()
稍微深入下我们引用的例子,我们甚至可以把函