函数定义
使用def关键字,如 def functionName(参数列表)
函数的参数
Python中任何变量都是对象,所以只支持按引用传递。Python通过名字绑定机制把实际参数的值和形式参数的名字绑定在一起。即把形式参数传递到函数所在的局部命名空间,形式参数和实际参数指向同一存储空间。
默认参数
函数的参数支持默认参数。当某个参数没有传递实际值时,函数将使用默认参数。
1 def append(args=[]): 2 args.append(0) 3 print args 4 append() 5 append([1]) 6 append([2,3]) 7 append()
结果:
line4:[0]
line5:[1, 0]
line6:[2, 3, 0]
line7:[0, 0]
注意line4和line7为何是这样的结果呢?(第一次见到时我也疑惑了)因为Python参数是按引用传递的,line4中使用默认参数在函数执行完后在结尾追加了[0],line7中再次使用默认参数时,默认参数已被line4修改为[0],再追加[0]就是[0,0]了。
可变参数
在形式参数前使用“ * ”标志符可实现可变参数。
1 def func(*args): 2 print args 3 func(1,2,3)
结果:(1, 2, 3)
在形似参数前使用“ ** ”标志符,可以引用一个字典,该字典根据实际参数的赋值表达式生成。
Python语法规定“*”必须写在“**”前面。
1 def search(*t, **d): 2 keys = d.keys() 3 values = d.values() 4 print keys 5 print values 6 for arg in t: 7 for key in keys: 8 if arg == key: 9 print "find", arg, d[key] 10 11 search("A", "B", "C", A = '1', C = '3', B = '2', D = '4')
结果:
['A', 'C', 'B', 'D']
['1', '3', '2', '4']
find A 1
find B 2
find C 3
函数返回值
函数的返回使用return语句,return后可以是变量或者表达式。
Python中即使函数没有使用return语句,仍然能获得返回值。
1 def func(): 2 pass 3 4 b = func() 5 print b
结果:None
None是Python中的一个对象,及不是数字也不是字符。当函数的return后没有对象时,也会返回None。