2021-03-01

python基础 函数作用域
1、匿名函数 :把一个简单的函数写成一行的形式 (语法糖)
lambda 参数:表达式

a = [1, 3, 2, 6, 4]
#def func(x):
    #return x > 3
#print(list(filter(func, a)))
aaa = lambda x:x > 3
print(list(filter(aaa, a)))
三目运算:把一个简单的条件判断写成一行的形式

2、函数作用域
01 外部不能访问函数内部变量:
变量搜索顺序, 先搜索局部变量, 然后搜索全局变量

def fun1():
       x = 1
       return x

def func():
a = 1 #局部变量
print(a)
return a
func()

a = 2 #全局变量
def func():

a = 1 #局部变量

print(a)
return a

func()

02函数内部能够函数外部变量:
def fun2():
print(x)
return x + 1
03函数里面不能修改函数外部变量:
x = 123
def fun3():
x = x + 1
return x

04函数里面和函数外部变量名相同:
x = 123
print(x, id(x))
def fun4():
x = 456
print(x, id(x))
x += 1
return x

001、global(修改全局变量):
x = 123
def fun1():
global x
x += 1
return x

002 nonlocal(局部变量):
def fun2():
x = 123
def fun3():
nonlocal x
x += 1
return x
return fun3()

def f1():
a = 1
def f2():

    nonlocal  a
    a += 1
    print(a)
return f2()

f1()

3、闭包
01、内嵌函数:
def fun1():
print(‘fun1()在被调用’)
def fun2():
print(‘fun2()在被调用’)
fun2

def f1():
print(‘sshjj’)
def f2():
print(‘ghhnh’)

return f2()

f1()

02、闭包:
def fx(x):
x += 1
def fy(y):
return x*y
return fy

print(z(3))

def f1(x):
x += 1
def f2(y):
return x*y
return f2
z = f1(3)
a = f1(4)
print(z(3))
print(a(4))

包是函数里面嵌套函数,外层函数返回里层函数的函数体,这种清况称之为闭包。
闭包是概念,不是函数类型,和递归的概念类似,就是这种特殊的函数调用。
闭包可以得到外层函数的局部变量,是函数内部和外部沟通的桥梁。

4、递归 自己调用自己 要有终止条件
01、阶乘:
def factorial(n):
if n = = 1:
return 1
return factorial(n-1)*n

def f1(x):
if x > 1:

    return x *f1(x-1)
else:
    return 1

print(f1(8))

02、递归中可以函数自身,但是使用是类似于条件循环一样,要有递归的终止条件

5、回调函数

ef choice(callback, ch):
if ch:
callback()
else:
print(‘ok’)

def play():
print(‘hahaha’)

choice(play, 1)

02、回调函数:自身是一个函数,只是被传入到另一个函数中,供其调用
回调函数不一定会被调用,是否调用由传入函数的内部逻辑决定

def f1():
print(‘dffd’)

def func(f1,a):
if a > 5:
f1()

else:
    print('ok')

func(f1, 4)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值