6

def discounts(price,rate):

    final_price = price * rate#原价乘以折扣率

    #old_price = 88 #这里试图修改变量

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

    return final_price

    上面一段都是局部变量,下面打印不了局部变量

    下面是全局变量,可以在上面打印全局变量,可以访问,但不能修改

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

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

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

new_price = discounts(old_price,rate)

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

>>> count = 5 #全局变量

>>> def MyFun():

count = 10 #修改这里,不会影响全局变量

print(count)

>>> MyFun()

10

>>> print(count)

5

>>> def MyFun():

global count #用global关键字修改全局变量

count = 10

print(count)

>>> MyFun()

10

>>> print(count)

10

支持函数嵌套

>>> def fun1():

print('fun1()正在被调用...')

def fun2():

print('fun2()正在被调用...')

fun2()

>>> fun1()

fun1()正在被调用...

fun2()正在被调用...

只有fun1才能调用fun2

在函数1内部嵌套的函数2,除了函数1内可以调用,函数1外都不能调用

  闭包

闭包就是能够读取其他函数内部变量的函数

>>> def FunX(x):

def FunY(y):

return x * y

return FunY

>>> i = FunX(8)>>>

 i.FunY at 0x0000020063B3C840>>>>

 type(i)>>> i(5)

40

>>> FunX(8)(5)

40

在外部,调用不了FunY

闭包中不能修改外部作用域的局部变量

试图修改时,内嵌函数内的相对局部变量值就会被屏蔽掉,没有初值

>>> def Fun1():

x = 5 #非全局变量的外部变量

def Fun2():

x *= x  #局部变量没有定义不能引用

return x #

return Fun2()

>>> def Fun1():

x = [5]

def Fun2():

x[0]*= x[0] #列表不是存放在栈里面,不会出错

return x[0]

return Fun2()

>>> Fun1()

25 

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容