python 子函数返回母函数结果_我的Python学习之旅12

2017.2.12

20.

Globa函数

作用就是修改全局变量。

global函数

内嵌函数

函数内嵌

闭包

闭包是一种满足特定要求的内嵌函数。这里我们还是将内嵌函数称为子函数,其外部的函数称为母函数,则当子函数体内有对母函数体内定义的变量的引用时我们称这个子函数为一个闭包。但当母函数和其闭包都定义了参数时,由于在母函数体外是无法直接对闭包进行函数调用的,为了能够实现对闭包的调用,需要在母函数内增加一条返回闭包函数名本身的语句,这个时候调用母函数后返回的是一个闭包的函数对象,就可以通过这种方法间接调用闭包函数了,举例说明:

>>> def funx(x):

def funy(y): #这里面funy就是一个闭包

return x*y

return funy #直接返回闭包函数名

>>> i = funx(5) #返回过来的是一个函数对象赋值给了i

>>> i

.funy at 0x0247CD68>

>>> type(i)

>>> i(8) #i可以直接进行函数调用了

40

当然也可以直接使用funx(5)(8)这种形式进行调用,和上述方式实现的结果一样。

在内嵌函数内修改外部函数内定义的变量的值

前面已经讲过,无法直接在闭包内部对外部函数的变量进行修改,但是如果真的非要修改的话,在Python3里面是可以的,需要增加一条声明此变量是外部函数内变量的语句nonlocal,举例说明:

>>> def mother():

num = 0

print('在mother函数体内定义的变量num的值为',num)

def son():

nonlocal num

num = 100

print('在son函数内部定义的num变量值为',num)

son()

print('在调用完son函数以后,mother函数体内定义的变量num的值为',num)

>>> mother()

在mother函数体内定义的变量num的值为 0

在son函数内部定义的num变量值为 100

在调用完son函数以后,mother函数体内定义的变量num的值为 100

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值