1.全局变量和局部变量
局部变量:在函数内部定义的变量【作用域仅仅局限在函数内部】–不同的函数,可以定义相同的局部变量,各用各的。
作用:为了临时的保存数据
当全局变量和局部变量重合时,优先使用函数内的局部变量
注:如果在函数内部对全局变量进行修改,要用global关键字对变量进行声明(否则修改无效,相当于定义局部变量)
name = '1'
def change():
global name
name = '2'
pass
change()
print(name)
2.匿名函数
使用lambda关键字创建匿名函数,及没有函数名字,不用def关键字创建标准的函数
使用方法:lambda 参数1,参数2:执行代码表达式
(注:1.匿名函数冒号后面的表达式有且只有一个,注,是表达式,不是语句
2.匿名函数自带return,return结果就是函数计算后的结果
3.只能是单个表达式,不是代码块,所以只能用于满足简单函数的场景)
test = lambda x,y:x+y
print(test(1,2))
#使用匿名表达式表示if-else结构
test = lambda x,y:x if x>y else y
print(test(1,2))
test2 = (lambda x,y:x if x>y else y)(4,6)#直接调用,后面口号相当于赋值
print(test2)
3.递归函数
自己调用自己
def dg(n):
if n == 1:
return 1
else:
return n * dg(n-1)
pass
print(dg(5))
优点:逻辑简单,定义简单
缺点:容易导致栈溢出,内存资源紧张甚至泄露
#使用递归读取文件
import os #引入文件操作模块
def findFile(file_Path):
listRs = os.listdir(file_Path)#获得该路径下的所有文件夹
for fileItem in listRs:
full_path = os.path.join(file_Path,fileItem)#拼接成完整路径
if os.path.isdir(full_path):#判断是否是文件夹
findFile(full_path)#如果是一个文件夹,再次递归
pass
else:
print(fileItem)#打印完整文件路径
pass
pass
else:
return
pass
findFile('D:\\openCV\\opencv\\build')