functioin

函数

作用域规则

       Python定义了3个命名空间,分别是局部local、全局global和内建built-in命名空间。程序视图访问标识符的值时,python会按照特定顺序搜索命名空间(即局部、全局和内建命名空间),检查是否存在标识符,以及它的具体位置。

递归与重复

l  递归和重复都建立在一个控制结构的基础上。

l  重复使用的是重复结构,比如forwhile

l  递归使用选择结构,比如ifif/else

l  无论重复还是递归,实际都牵涉到重复性操作。区别在于:

n  重复是显式使用一个重复结构;

n  递归则是进行重复的函数调用;

l  两者都要进行终止测试:

n  重复会在循环继续条件为false时终止;

n  递归在识别出基本条件时终止;

l  由计数器控制的重复和递归都是逐渐终止:

n  重复会不断修改一个计数器,直到计数器的值使循环继续条件编程false

n  递归则不断对原始问题进行简化,直到抵达基本条件;

l  重复和递归都可能无休止地进行。

 

l  递归有很多缺点:它采用重复调用机制,不断产生函数调用开销,这不仅浪费处理器处理时间,还会占用大量内存。每次递归调用都会导致创建另一个函数拷贝(事实只是函数的变量),这会占用大量内存;

 

l  重复通常在函数内部发生,所以能忽略重复函数调用和额外内存分配的开销。

 

PS:一个由多个函数构成的程序与没有任何函数的一体式程序相比,会产生大量的函数调用,这些调用会占用大量的处理器时间和内存。但另一方面,一体式程序的编程、测试、调试和维护都比较复杂。

默认参数

       定义函数时,可以将一个或多个参数指定为默认参数,并可为其指定一个默认值。默认参数主要是为了提供方便,调用函数时,可以指定较少的参数数量。但是要注意,默认参数必须位于任何非默认参数的右边。调用有两个或更多默认参数的函数时,如果省略的参数不在参数列表最右边,那就必须省略它之后的所有参数。

比如:

       def box(length = 1, width = 1, height = 1):

              return length * width * height

关键字参数

       程序员可要求函数接收一个或多个关键字参数。函数定义为每个关键字指派一个默认值。函数即可使用关键字的默认值,也可在函数调用中为关键字指派一个新值(格式为keyword=value)。使用关键字参数时,参数在函数调用中的位置不必与它的函数定义中的位置一一对应。

 

functioin

函数

作用域规则

       Python定义了3个命名空间,分别是局部local、全局global和内建built-in命名空间。程序视图访问标识符的值时,python会按照特定顺序搜索命名空间(即局部、全局和内建命名空间),检查是否存在标识符,以及它的具体位置。

递归与重复

l  递归和重复都建立在一个控制结构的基础上。

l  重复使用的是重复结构,比如forwhile

l  递归使用选择结构,比如ifif/else

l  无论重复还是递归,实际都牵涉到重复性操作。区别在于:

n  重复是显式使用一个重复结构;

n  递归则是进行重复的函数调用;

l  两者都要进行终止测试:

n  重复会在循环继续条件为false时终止;

n  递归在识别出基本条件时终止;

l  由计数器控制的重复和递归都是逐渐终止:

n  重复会不断修改一个计数器,直到计数器的值使循环继续条件编程false

n  递归则不断对原始问题进行简化,直到抵达基本条件;

l  重复和递归都可能无休止地进行。

 

l  递归有很多缺点:它采用重复调用机制,不断产生函数调用开销,这不仅浪费处理器处理时间,还会占用大量内存。每次递归调用都会导致创建另一个函数拷贝(事实只是函数的变量),这会占用大量内存;

 

l  重复通常在函数内部发生,所以能忽略重复函数调用和额外内存分配的开销。

 

PS:一个由多个函数构成的程序与没有任何函数的一体式程序相比,会产生大量的函数调用,这些调用会占用大量的处理器时间和内存。但另一方面,一体式程序的编程、测试、调试和维护都比较复杂。

默认参数

       定义函数时,可以将一个或多个参数指定为默认参数,并可为其指定一个默认值。默认参数主要是为了提供方便,调用函数时,可以指定较少的参数数量。但是要注意,默认参数必须位于任何非默认参数的右边。调用有两个或更多默认参数的函数时,如果省略的参数不在参数列表最右边,那就必须省略它之后的所有参数。

比如:

       def box(length = 1, width = 1, height = 1):

              return length * width * height

关键字参数

       程序员可要求函数接收一个或多个关键字参数。函数定义为每个关键字指派一个默认值。函数即可使用关键字的默认值,也可在函数调用中为关键字指派一个新值(格式为keyword=value)。使用关键字参数时,参数在函数调用中的位置不必与它的函数定义中的位置一一对应。