python--内部函数(十四)
【摘要】
python--内部函数(十四)
# 内嵌函数和闭包 # 将局部变量改为全局变量count = 5 #定义全局变量countdef myfun(): count = 10 #定义局部变量count print(count)myfun() #调用myfun方法,打印的结果是count=10 说明当全局...
python--内部函数(十四)
-
# 内嵌函数和闭包
-
-
# 将局部变量改为全局变量
-
count = 5 #定义全局变量count
-
def myfun():
-
count = 10 #定义局部变量count
-
print(count)
-
myfun() #调用myfun方法,打印的结果是count=10 说明当全局变量和局部变量重名时,先在局部查找这个指定的变量,如果没有在去全局查找。
-
-
# global 全局关键字
-
count = 5 #定义全局变量count
-
def myfun():
-
global count #用global修饰局部变量count,使其变为全局变量
-
print(count)
-
myfun() #调用myfun方法,打印的结果是5,说明global count修饰局部变量变为全局变量成功。
-
-
# 内嵌函数==内部函数
-
def fun1(): #定义外层的方法
-
print('fun1()方法正在被调用')
-
def fun2(): #定义内部方法
-
print('fun2()方法正在被调用。。。')
-
fun2() #在外层方法中调用内部方法
-
-
fun1() #调用fun1()方法同时由fun1()调用fun2()方法 调用fun1()方法结果:fun1()方法正在被调用 fun2()方法正在被调用。。。
-
-
'''
-
闭包 函数式编程lisp
-
什么是闭包:1、存在内嵌关系,及外部函数内嵌了一个函数。2、外部函数定义的变量被内部函数引用。满足这两个条件就是是内部函数是外部函数的闭包
-
-
'''
-
def fun1(x): #定义外层的方法
-
print('fun1()方法正在被调用')
-
def fun2(y): #定义内部方法,调用外部函数的变量
-
print('fun2()方法正在被调用。。。')
-
return x * y
-
return fun2 #返回fun2的值
-
i = fun1(5)(7) #调用fun1同时给fun1和fun2传递参数
-
print(i) #打印fun1和fun2的值
-
-
# 闭包中如果在内部函数中修改外部函数变量,会引发错误。
-
# 原因是内部方法的局部变量名称和外部方法的变量名称一样,且作用域范围不一样导致的。
-
# 解决的方法就是在内部方法中将这个重名的变量申明为nonlocal
-
def fun1():
-
x = 5
-
def fun2():
-
nonlocal x #将x变量设置为nonlocal
-
x +=x
-
return x
-
return fun2()
-
i = fun1()
-
print(i) #结果为10
-
文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。
原文链接:brucelong.blog.csdn.net/article/details/80336010
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)