1、函数的定义与调用
1)函数的定义与调用:参数+函数体+返回值
  ① 定义
1 2 3 4 5 6 7 8
   |  def 函数名(参数): 	函数体 	return 返回值
  def area_of_square(length_of_side): 	square_area = pow(legth_of_side,2) 	return square_area
 
  | 
 
  ② 调用
1 2 3 4 5 6
   |  def area_of_square(length_of_side): 	square_area = pow(legth_of_side,2) 	return square_area
  area = area_of_square(5)
 
  | 
 
2)参数的传递
  ① 位置参数:按照位置顺序用实参对形参赋值,实参形参个数一一对应
1 2 3
   | def function(x,y,z): 	return x,y,z function(1,2,3) 
 
  | 
 
  ② 关键字参数
1 2 3 4 5 6 7
   | def function(x,y,z): 	return x,y,z function(y=1,z=2,x=3) 
  def function(x,y,z): 	return x,y,z function(1,z=2,y=3) 
 
  | 
 
  ③  默认参数:在定义函数阶段就给形参赋值
1 2 3 4 5
   | 
  def function(x,y,z=3): 	return x,y,z function(y=1,x=3) 
 
  | 
 
  ④  可选参数:让参数变成可选的
1 2 3 4 5 6 7
   | def name(first_name,last_name,middle,name = None): 	if middle_name: 		return first_name+middle_name+last_name 	else: 		return first_name+last_name print(name("Cheng","Liu"))  print(name("Cheng","Liu","JR"))  
 
  | 
 
  ⑤  可变长参数  *args
1 2 3 4 5 6
   | def foo(x,y,z,*args): 	print(x,y,z) 	print(args) foo(1,2,3,4,5,6)   foo(1,2,3,[4,5,6])   foo(1,2,3,*[4,5,6])  
 
  | 
 
  ⑥  可变长参数  **kwargs
1 2 3 4
   | def foo(x,y,z,**kwargs): 	print(x,y,z) 	print(kwargs) foo(1,2,3,a=4,b=5,c=6)  
 
  | 
 
3)函数体与变量作用域
  ① 局部变量:在函数内部定义的变量,仅在函数内部起作用
  ② 全局变量:在函数外部或使用global修饰的变量
4)返回值
  ① 单个返回值:就是用return返回
  ② 多个返回值:通过元组的形式
1 2 3 4
   | def foo(x=1): 	return 1,x,x**2,x**3 print(foo(3))   a,b,c,d = foo(3) 
 
  | 
 
2、匿名函数
1)定义格式:lambda 变量:函数体
2)常用用法
  ① 列表排序sort()
1 2 3
   | ls = [(93,88),(79,100),(86,71),(85,85),(76,94)] ls.sort(key = lambda x:x[1])   ls.sort(key = lambda x:x[0]+x[1])  
 
  | 
 
  ② max()和min()
1 2 3
   | ls = [(93,88),(79,100),(86,71),(85,85),(76,94)] n = max(ls,key = lambda x:x[1]) m = min(ls, key = lambda x:x[1])
 
  |