码迷,mamicode.com
首页 > 编程语言 > 详细

Python内嵌函数

时间:2018-07-03 14:43:39      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:rate   int   oba   line   全局   global   for   引用   ast   

局部变量

def discount(price, rate):

final_price = price * rate

return final_price


old_price = float(input('请输入原价:'))    全局变量

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

new_price = discount(old_price, rate)

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

print('打印局部变量final_price的值:',final_price) 显示为定义的变量,final_price为discount函数中的变量,为局部变量,出了discount就无效了  


在局部变量中定义全局变量

>>> test1 = 5

>>> def change():

test1 = 10

print(test1)


>>> change()

10

>>> test1

5


>>> def change():

global test1

test1 = 10

print(test1)


>>> change()

10

>>> test1

10


内嵌函数

>>> def fun1():

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

def fun2():

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

fun2()


>>> fun1()        调用fun1()后执行调用fun2()

fun1正在被调用..

fun2正在被调用...


闭包 如果在一个内部函数里,对在外部作用域的变量进行引用

>>> def fun3(x):

def fun4(y):

return x * y

return fun4


>>> fun3(1)

<function fun3.<locals>.fun4 at 0x0000000002F549D8>

>>> type(fun3)

<class 'function'>


>>> fun3(1)(2)

2


>>> def fun1():

x = 5

def fun2():

x *= x

return x

return fun2()

>>> fun1()

Traceback (most recent call last):

  File "<pyshell#52>", line 1, in <module>

    fun1()

  File "<pyshell#50>", line 6, in fun1

    return fun2()

  File "<pyshell#50>", 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










Python内嵌函数

标签:rate   int   oba   line   全局   global   for   引用   ast   

原文地址:http://blog.51cto.com/12686555/2135500

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!