● 函数的定义
1.关键字: def 

● 参数传递方式
1.定长参数:
  如:
  def printinfo( name, age = 35 ):   
  "打印任何传入的字符串"   
  print "Name: ", name   
  print "Age ", age   
  return
  #调用printinfo函数
  printinfo( age=50, name="miki" )
  printinfo( name="miki" )
  就是正常的传递, 加个默认值就是默认参数; python的定长参数有个特性就是可以设置关键字参数, 就是调用的时候可以指定参数名
  进行赋值,这样就不用再管参数的传递顺序, python会自动根据参数名匹 
  配.
2.不定长参数
  如:
  def printinfo( arg1, *vartuple ):   
  "打印任何传入的参数"   
  print "输出: "   print arg1   
  for var in vartuple:      
     print var  
     return 
  # 调用printinfo 函数
  printinfo( 10 )
  printinfo( 70, 60, 50 )
  关键词:*, 就是有个参数已*关键字开头, 就可以接受后面传递的所有没有申明的参数
  标注: *单星号标识接受的数据格式是元组, 传递参数是不用传递参数名; **双星号标识接受的数据格式是字典, 传递参数用传递参数名

● 参数传递的变量对象
1.可更改的对象:
  list,dict 等则是可以修改的对象
  类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的变量也会受影响
2.不可更改的对象:
  strings, tuples, 和 numbers 是不可更改的对象
  类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,
  只是修改另一个复制的对象,不会影响 a 本身
  标注: python中的元组这个复杂性变量也属于不可变对象参数类型

● 匿名函数
1.关键字: lambda
  如: 
  # 可写函数说明
  sum = lambda arg1, arg2: arg1 + arg2
  # 调用sum函数
  print "相加后的值为 : ", sum( 10, 20 )print "相加后的值为 : ", sum( 20, 20 )
  # 调用sum函数
  print "相加后的值为 : ", sum( 10, 20 )print "相加后的值为 : ", sum( 20, 20 )
  标注:lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限
  的代码逻辑.

●返回
1.关键字: return
  python 中的return返回也会打断代码, return后面没值时返回none

●变量作用域
1.全局变量&&局部变量
  函数体内的属于局部变量, 外部的属于全局变量