第三章: 函数
Python的组件包括函数,类,模块和包。包是模块的集合,模块是函数和类的标识符(标识符指变量和函数名)集合。
命名空间储存与标识符及其绑定值有关的信息,Python定义3个空间:局部(local),全局/模块(global),内建(built-in)。Python按从局部到全局到内建的顺序在命名空间中查找标识符的值,比如每个模块都有__name__表示模块名。但不同命名空间同名的变量可能引起逻辑错误。
函数参数的传值方式:传值,用拷贝值;传引用,对原值修改。Python规定“传对象引用”,是传值和传引用的结合,即如参数是可变对象当做传引用,如参数是不可变对象当做传值。
如在\Python\Lib里面:
import moduleName, module2name moduleName.functionName() |
导入模块, 使用方法-模块名.方法名 示例 import math print math.cos(3) import random print random.randrange(1, 7)
|
from math import sin, cos, tan from math import * |
直接导入会话的命名空间, 使用方法-直接用(前面不用模块名) *的话不含以下划线的的标识符,不推荐! |
import random as randomModule from math import sqrt as squareRoot |
创建了一个叫randomModule的模块引用 创建了一个叫squareRoot的函数引用 |
def square (y): return y*y
print square(10) |
函数的格式: 一定要用冒号: 用缩进表示主体; 返回值:如没return就返回None值。 |
def calVolumn(x=1, y=2, z=3): return x * y * z print calVolumn(2) |
默认参数 一定要靠右边排列, 非默认参数放左边. |
def calVolumn(x=1, y=2, z=3): return x * y * z print calVolumn(y=4) |
显式参数(关键字):参数的顺序随便。
但是混合显式和非显式参数容易导致错误。 |
递归:递归调用(recursivecall),或又称递归步骤(recursivestep)。不过递归费时又耗内存,但有时直观易理解。
较灵活的调用方法:
options = [ textFile, updateRecord, newRecord, deleteRecord ] options[ number - 1 ]( argument ) |
把所有的方法名字放到一个列表中,如果用列表的下标去调用函数。 |