函数

函数定义

      使用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。

原文地址:https://www.cnblogs.com/baiyideng/p/3641231.html