# python 基础系列11-函数的构成 # 引入sys库 import sys import copy from functools import reduce def func(): print('aaaaaa') return def func2(x, y): print('bbbbb') return x + y def func3(x, y='xxx'): print(x, y) return x + y def func4(**war): print(war) def func5(*a): print(a) def func6(*a,**b): print(a,b) def func8(*a,**b): pass def func7(*a,**b): return 1,2 if __name__ == '__main__': print(1) func() rs = func2(1, 2) print(rs) # 缺省参数 rs3 = func3('as2') # rs3 = func3('as2','sssx') # 不定长参数 func4(a=1, b=2, c=3, d=4) func5(1,2,3,4,5) func6(1,2,3,4,a=1, b=2, c=3, d=4) #常用用法 #无返回值 func7() #返回多个值,可以用变量接收 var = func8() var1,var2 = func8()
# python 基础系列 -作用域 # 引入sys库 import sys import copy from functools import reduce #全局变量 a=11 b=22 def func(): global a #局部变量 a=3 print(a) return 4 mylist = [1,2,3] def func2(var): var[0] = 'a' #局部变量 print(var) pass def func3(var): var1=var[:] var1[0] = 'a' #局部变量 print(var1) pass if __name__ == '__main__': # 作用域 print(a) #在函数内修改全局变量,使用 global 关联全局变量 func() print(a) #这里的a值就发生了变化 #函数内部修改参数--传引用 ,我们发现2者值一致 都为 ['a', 2, 3] # func2(mylist) # print(mylist) #为了解决上面的问题我们多加了一个赋值拷贝过程(注意是拷贝过程,而不是赋值) func3(mylist) #['a', 2, 3] print(mylist) #[1, 2, 3]
# python 基础系列-函数嵌套 # 引入sys库 import sys import copy from functools import reduce def fun1(): print(1) def fun2(): global fun1 def fun1(): print('aaaaa') def fun3(): print(3) def fun4(): print(4) if __name__ == '__main__': #函数嵌套 fun2() fun1() #要先申明这个函数
# python 基础系列-匿名函数 # 引入sys库 import sys import copy from functools import reduce if __name__ == '__main__': print() #匿名函数一般做一些简单的函数 f = lambda x:x*x rs= f(2) print(rs) #支持默认参数 func=lambda x,y =1 :x+y print(func(4)) #用途:跳转表 举例子 mylist = [lambda x:x*x,lambda x:x+1,lambda x:x-1] for func in mylist: print(func(3)) #传参
# python 基础系列 -递归 # 引入sys库 import sys import copy from functools import reduce def func(list): if list == []: print('列表为null') return 0 return list[0]+func(list[1:]) def cost(money,day=0): if money <= 0 : print('没钱了,花了',day) return 0 else: money = money // 2 day +=1 cost(money,day) def func2(): print('a_1') func2() if __name__ == '__main__': #递归就是函数中包含对自身的调用: print(9/4) print(9//4) mylist= [1,2,3,4,5] sum = 0 while mylist: sum += mylist[0] mylist = mylist[1:] print(sum) #递归求和方法: mylist2 = [1, 2, 3, 4, 5] print(func(mylist2)) money = 10000 #每天花一半的钱,求花多少天 cost(money) #递归 效率高,但是内存消耗大 ,普通循环 内存小,效率稍低,py内部会设置一个最大值,会报错 func2()