Python函数:全局变量和局部变量匿名函数lambda递归函数
Posted 晚风Adore
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python函数:全局变量和局部变量匿名函数lambda递归函数相关的知识,希望对你有一定的参考价值。
全局变量和局部变量
- 全局变量可以作用于整个程序中
- 局部变量在函数内部定义,只能作用在函数内部
name1 = 'lzh' # 全局变量,整个程序都可以使用
def sum(a,b):
name2 = 'ssd' # 局部变量,作用仅限于函数内部
print(a+b)
print(name2)
return
print(name1)
sum(2,6)
print(name2)
'''
lzh
8
ssd
NameError: name 'name2' is not defined
'''
对全局变量的修改:
在外部使用赋值等操作进行修改
在函数内部需要使用global关键字进行声明后进行修改,否则定义为一个新的局部变量。
name1 = 'ddd'
def ChangeGlobalVari1():
global name1 # 若在函数内部修改全局变量,必须在用global对该变量声明
name1 = 'dfg'
return
def ChangeGlobalVari2():
name1 = 'dfg'
return
print(name1)
# 若运行ChangeGlobalVari1(),打印结果为dfg
# 若运行ChangeGlobalVari2(),打印结果为ddd
如果全局变量是列表或字典类型,则不需要声明全局变量
li = [66] # 可变类型,不用声明全局变量,可在函数内直接修改,地址不变
# 还有字典类型
print(li)
print(id(li))
def changeList(l):
l.append(23)
print(id(l))
return
changeList(li)
print(li)
'''
[66]
id值
id值
[66, 23]
'''
匿名函数
特点
- 使用lambda关键字创建函数
- 没有名字
- 冒号后面的表达式只能是一个,不是语句
- 自带return,返回表达式的结果
定义语法
变量 = lambda 参数1,参数2,...:表达式
# 变量用于接收表达式的值
调用语法
变量名(参数1,参数2,...)
示例:
def sum(a,b):
return a+b
SUM = lambda a,b:a+b
print(sum(23,4))
print(SUM(4,5))
# 选择逻辑运算,但只能实现简单逻辑
MaxNum = lambda a,b:a if a>b else b
print(MaxNum(3,5))
'''
27
9
5
'''
★递归函数
- 在函数内部调用函数本身
- 必须有一个结束条件,否则一直递归下去直到到达最大深度报错
示例:
# 求阶乘
def func1(n):
if n==1:
return 1 # 结束条件
else:
return n * func1(n-1)
print(func1(4))
'''
24
'''
使用递归函数打印出一个目录下所有的文件名(需要使用Python中的os模块)
import os # 导入文件操作模块
def findFile(filePath):
fileList = os.listdir(filePath)
# os.listdir 获取该路径下的所有文件名和文件夹名
for item in fileList: # item为文件名或文件夹名
if item =='$RECYCLE.BIN' or item == 'System Volume Information':
# $RECYCLE.BIN(回收站文件夹) 和 System Volume Information(缓存文件夹)通常隐藏
# 递归文件路径时应该避开这两个文件夹,否则会出错
continue
fullPath = os.path.join(filePath,item) # 得到item文件或文件夹所在的完整路径,并用于判断
# 组合filePath和item为新的路径并返回
if os.path.isdir(fullPath): # 判断fullPath是否是文件夹
print(os.path.isdir(fullPath))
findFile(fullPath) # 递归调用
else:
print(item)
pass
else:
return
findFile('文件夹路径')
以上是关于Python函数:全局变量和局部变量匿名函数lambda递归函数的主要内容,如果未能解决你的问题,请参考以下文章
python的这四大函数类型得牢记(变量,引用,匿名,递归)