```python
#閉包 針對函數 在函數中提出的概念 在函數中嵌套函數
#閉包具備的條件,第一個 函數嵌套函數 第二個外部函數的傳回值是内部函數名--注意這裡不能加括号,加括号代表的調用 第三個内部函數使用外部函數的變量
"""
格式
def 外部函數():
def 内部函數():
.......
....
return 内部函數名字
"""
def func():
a=100
def inner():
b=99
print(a+b)
return inner
x=func()#x就是内部函數,函數名+括号=調用函數
x()
def func1(a,b):
c=10
def add():
print(a+b+c)
return add
a=func1(10,20)#在外部函數調用的時候必須用一個變量接受func1的傳回值,就相當于a=add()
b=func1(20,30)
a()
b()
"""
閉包的簡單實用
閉包:1.可以記錄狀态,儲存對外部函數引用的狀态。
a=func1(10,20)#在外部函數調用的時候必須用一個變量接受func1的傳回值,就相當于a=add()
b=func1(20,30)#b已經記錄了a和b的值,不會受到外界ab值改變的影響
a()
b()
不會影響目前的狀态。a、b變化不會影響到内部函數的變化。(因為函數在調用結束之後,空間會被收回。但是内部函數并沒有被收回)
2.讀取其他元素的内部變量
3.延長作用域
"""
![在記憶體中調用函數時,進行的記憶體配置設定](https://img-blog.csdnimg.cn/20201201204624312.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25ubHVvcA==,size_16,color_FFFFFF,t_70)