函数的定义和使用
- 函数:程序中可以复用的代码块
函数的定义和使用
def 函数名名(参数1,参数2,...): 函数体 return 返回结果! 变量名 = 函数名(值1,值2,....) #值和参数个数一一对应!
- 函数1:实现求任意两个数的和
- 函数2:实现求任意两个数的和,再结果基础上再加10
- 函数3:实现求任意两个数的四则运算!并判断结果是否为偶数
# 函数1 def demo(a,b): print(f"结果为{a+b}") # 函数2 def demo2(a,b): return a+b jieguo = demo2(3,4) print(jieguo+10) # 函数3 def demo3(a,b,fuhao): result = 0 if fuhao == "+": result=a+b elif fuhao == "-": result=a-b elif fuhao == "*": result=a*b if fuhao == "/": result=a/b return result demo3(10,2,"/") jieguo2 = demo3(10,2,"/") if jieguo2 % 2 ==0: print("偶数") else: print("奇数")
函数特性
1,参数默认值
def demo3(a,b,fuhao="+"): pass demo3(3,4) #可传递两个变量! 符号有默认值
2,可变参数*args接收任意元组
def demo(*args): pass a =(1,2,3) demo(a)
3,可变参数**kwargs接收任意字典
def demo(**kwargs): pass dic1 ={"name":1,"passwd":2} demo(dic1)
4,解包裹
# 拆分元祖 def demo(a,b,c): pass args= (1,2,3) demo(*args) # ==>自动把元祖拆分为 a,b,c 三个变量 # 拆分字典 def demo(a,b,c): pass kwargs= {'name1':'aa','name2':'bbb','name3':'ccc'} demo(**args) # ==>自动把元祖拆分为 a,b,c 三个变量, 结果: aaa,bbb,ccc
5,递归
- 函数内部,自己调用自己
- 主意!!! 一定要有出口
求累加,阶乘
def demo(n): if n<=1: return 1 # 函数遇到return,表示结束了 return n+ demo(n-1) #调用 print(demo(100)) #结果5050
面试题:使用递归读取某个目录下的所有文件!
判断条件 是否为目录,不是目录就退出
6,函数参数为另一个函数(相当于使用函数的结果)
def fn1(a,b): return a+b def fn2(fn1): print(fn1()) fn2(fn1(3,4)) # 相当于fn2("7")
7,lambda函数
匿名函数,就是没有名字的函数
lambda 参数1,参数2....表达式
# 定义两个数的和 def fn1(a,b): return a+b # 简写 fn2 = lambda a,b:a+b print(fn2(3,4))
8,map函数(列表中的每个值都执行某个函数)
fn1 = lambda x:x*2 jieguo = map(fn1,[1,2,3]) # 会自动把1,2,3三个值都乘以2 print(jieguo) #2,4,6
9,filter函数(列表中每个元素的值都执行某个函数,只保留为true的)
fn1 =lambda x:x%2 jieguo = filter(fn1,[1,2,3,4,5]) print(jieguo)
10 ,函数中变量作用域
- 函数中的变量:局部变量,只能当函数使用
- 函数外的变量:全局变量,当前py文件任意函数都可用
11,装饰器
- 内部函数自动执行外部函数!
- 特点: 装饰器优先于函数先执行!
- 作用:经常用于给某个函数实现功能扩展! 实现:不该原来代码,的情况下,添加额外功能!
- 装饰器可以写多个
扩展登录验证
#扩展的验证功能 def check_login(func): print('开始验证是否登陆.........') def inner(name): print('各种判断,从sessin中获取') if name=='admin': print('登陆成功,可以看购物车') else: print('请先登陆,跳转到的呢牢固') func(name) return inner '''扩展: 不修改原代码!扩展验证name是否登陆!''' @check_login def gouwueche(name): print(f'查看购物信息')