7.函数作用域和匿名函数

1.匿名函数

lambda
格式:变量 = lambda 参数:表达式
print(变量(参数数值))
表达式相当于返回值

a = lambda b:b
print(a(100))
结果:100

2.函数作用域

2.1.globol 改变函数内部的变量改成全局变量

格式:def 函数名():
globol 变量
变量 = 数值
print(变量)
调用:函数名()
print(变量)

a = 100
def b():
    global a
    a = 200
    print(a)
b()
print(a)
结果:200 200

a = 100
def b():
    a = 200
    print(a)
b()
print(a)
结果:200 100

2.2.nonlocal 改变函数内部的变量改变成局部变量

格式:nonlocal 变量
适用于嵌套函数

def b():
    a =200
    def b1():
        nonlocal a
        a = a + 100
        return a
    return b1()
c = b()
print(c)
结果:300

3.闭包

在嵌套函数的基础上才叫闭包
格式:def 函数名():
def函数名1():
return 返回值1
return 返回值1
调用:变量 = 函数名()()
print(变量)

def a():
    a=100
    def a1():
         return 100+a
    return a1
b = a()()
print(b)
结果:200

def a():#外层函数
    def a1():#内层函数
        print('我是a1')
    def a2():#内层函数
        print('我是a2')
    return a2#外层的函数返回内层的函数体

de = a()()#a()相当于a1(),调用a()外层函数里面的内层函数a1()
结果:我是a2

4.递归

一个函数在内部调用自己的函数称为递归
格式:def 函数名(参数):
if 参数条件:
return 返回值
return 函数名()

def a(x):
    if x == 1:
        return 1
    return a(x - 1) + x
a1 = a(3)
print(a1)
结果:6

5.回调函数

被传入、后面又被调用的函数就称为回调函数

def a(b,c):
    if c == 1:
        b()
    else:
        print('c不等于1')
def d():
    print('d函数')

a(d,2)
a(d,1)
结果:c不等于1  d函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值