python 闭包讲解
学习目标:掌握闭包的用途和用法,掌握nonlocal关键字的作用
1.闭包初识
depsoit=True意思是判断是取款还是存款。True存款,False取款。
全局变量容易被人修改,如何解决呢?
·将变量定义在函数内部是行不通的
·我们需要使用闭包
目的就是想要我们既可以使用这个全局变量,又不想让那个全局变量可以被修改
先来看一个简单的闭包问题
调用outer,传入logo,返回inner,可以让我们的内部函数去依赖于一个外部变量,最终达到的效果就是可以让我们这个内部的函数正常运行,同时它依赖的外部变量也能够得到他想要的值
fn1就等于inner,调用fn1就等于调用inner
当我们想要去修改它的外部变量的时候,我们就可以重新调用一下outer,就可以去给他重新重置一个外部变量
2.nonlocal关键字
这样别的代码根本无法修改你的num1变量
3.使用闭包实现ATM取钱存钱案例
# 使用闭包实现ATM小案例· def account_create(initial_amount=0): def atm(num,deposit=True): # True存钱False取钱 nonlocal initial_amount if deposit: initial_amount += num print(f"存款:+{num},账户余额:{initial_amount}") else: initial_amount -= num print(f"取款:-{num},账户余额:{initial_amount}") return atm atm = account_create() atm(100) atm(200) atm(100,deposit=False)
initial_amount只是一个作用于函数的临时变量,并不是全局变量,所以无法修改,而且它可以一直保留住,不管你atm多少次,他都一直可以使用,结果是一个持续的累加过程,一直去存储这个值
外部变量本质上就是外层函数的内部临时变量
但是其实就一个变量的内存,内存不大,缺点就不是很明显
4.总结
原文地址:https://blog.csdn.net/2401_87332612/article/details/143694078
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!