函数:
特性:1.减少重复代码
2.增加可扩展性
3.易维护
1 def func():#函数定义 2 print('hello world') 3 return 0#返回值 4 func()#函数调用 5 6 def func_1(x,y):#形参 7 print(x) 8 print(y) 9 func_1(1,2)#实参 10 11 #默认参数: 12 def func_2(x,y=2): 13 print(x) 14 print(y) 15 func_2(1) 16 17 #关键字参数:关键参数必须放在位置参数之后。 18 def func_3(x,y): 19 print(x) 20 print(y) 21 func_2(y=1,x=2) 22 23 #非固定参数 24 def func_4(x,*args): # *args 会把多传入的位置参数变成一个元组形式 25 print(x) 26 print(args) 27 func_4(1,2,4,3,5) 28 def func_5(x,**kwargs): # *kwargs 会把多传入的关键字参数变成一个dict形式 29 print(x) 30 print(kwargs) 31 func_5(1,name = 'sugar',age = '18')
1 # 局部变量---->全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序 2 def func_6(name): 3 print('before:',name) 4 name = 2000 5 print('after:', name) 6 name = 1000 7 func_6(name) 8 print(name)#输出1000 9 10 # 全局变量,当全局变量与局部变量同名时: 11 # 在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。 12 name = 888 13 age = 9 14 def func_7(name): 15 global age#声明全局变量,注意:能用,但千万不要用!!!!!! 16 age = 10 17 print('before:',name) 18 name = 2000 19 print('after:', name) 20 func_7(name) 21 print(name,age)#888 10 22 23 name = ['ig','rng','edg']#除整数和字符串以外,列表,字典,类等都可以改 24 def func_8(name): 25 print(name) 26 name[0] = 'wxz' 27 print(name) 28 func_8(name) 29 print(name)#output:['wxz', 'rng', 'edg']
返回值:
要想获取函数的执行结果,就可以用return语句把结果返回
注意:
函数在执行过程中只要遇到return语句,就会停止执行并返回结果,so 也可以理解为 return 语句代表着函数的结束
如果未在函数中指定return,那这个函数的返回值为None
递归函数:
1 #递归:在函数内部调用自身 2 def calc(n): 3 print(n) 4 if int (n/2) > 0: 5 return calc(int (n/2)) 6 calc(10) 7 8 #output: 9 10 10 5 11 2 12 1 13 递归特性: 14 1. 必须有一个明确的结束条件 15 2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少 16 3. 递归效率不高
高阶函数:
1 #高阶函数:一个函数接收另一个函数作为参数,这种函数就称之为高阶函数 2 def add(x,y,f): 3 return f(x)+f(y) 4 x = add(-1,-2,abs)#abs为绝对值函数 5 print(x)#output:3