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的这四大函数类型得牢记(变量,引用,匿名,递归)

python局部变量高级函数匿名函数嵌套函数装饰器

内置函数和匿名函数

JS函数 -- 功能,语法,返回值,匿名函数,自调用匿名函数,全局变量与局部变量,arguments的使用

Python函数

局部变量作用域匿名函数