python内置函数与闭包_鱼C-python之函数-变量、内置函数、闭包

#####1.局部变量&全局变量

局部变量是在函数内部定义的,全局变量是在函数的外部定义的,在函数的内部可以访问全局变量,但是不要试图去修改全局变量,这样函数会在函数体内创建一个和全局变量名字一样的局部变量。

例子程序:

def discouts(price,rate):

final_price = price * rate

old_price = 50

print('修改后的old_price的值是1:',old_price)

return final_price;

old_price = float(input('请输入原价:'))

rate = float(input('请输入折扣率:'))

new_price = discouts(old_price,rate)

print('修改后的old_price 的值是2:',old_price)

print('打折后的价格是:',new_price)

结果:

==================== RESTART: D:/Python35/c/function1.py ====================

请输入原价:100

请输入折扣率:0.8

修改后的old_price的值是1: 50

修改后的old_price 的值是2: 100.0

打折后的价格是: 80.0

>>>

根据程序运行的结果可得到,在函数的内部修改全局变量是不起作用的。

如果你真想在函数内修改全局变量,那就在修改前加一句

global 变量

2.内嵌函数

即在函数1的内部定义一个函数2,但是函数2只能在函数1里面调用,出了函数1就不能调用啦。

3.闭包

闭包需满足2点:

1.在函数1的内部定义一个函数2

2.函数2引用了函数1 定义的参数

注意:闭包是在内置函数基础上的,所以函数2也不能在函数1的外部被调用

例子:

>>> def FunX(x):

def FunY(y):

return x * y

return FunY

>>> i=FunX(8)

>>> i

.FunY at 0x0000000003593840>

>>> type(i)

>>> i(5)

40

>>> FunX(8)(5)

40

>>>

如果变量在函数1里面被赋值,在函数2里面又想使用,要在 函数2使用变量前 对变量进行

nonlocal 变量

>>> def Fun1():

x = 5

def Fun2():

x *= x

return x

return Fun2()

>>> Fun1()

Traceback (most recent call last):

File "", line 1, in

Fun1()

File "", line 6, in Fun1

return Fun2()

File "", line 4, in Fun2

x *= x

UnboundLocalError: local variable 'x' referenced before assignment

>>> def Fun1():

x = 5

def Fun2():

nonlocal x

x *= x

return x

return Fun2()

>>> Fun1()

25

>>>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值