1. 程式人生 > 其它 >452、Java框架106 -【MyBatis - 多對多】 2020.12.24

452、Java框架106 -【MyBatis - 多對多】 2020.12.24

* 函式物件:可以將定義在函式內的函式返回到全域性使用,從而打破函式的層級限制。 * 名稱空間與作用域:作用域關係在函式定義階段時就已經固定死了。與呼叫位置無關,即在任意位置呼叫函式都需要跑到定義函式時找到作用域關係
def f1():
    x = 1
 
    def inner():
        print(x)
 
    return inner
 
func = f1()
x = 2
 
def f2():
    x = 3
    func()
 
f2()
outputs
1     
閉包:閉是封閉(函式內部函式),包是包含(該內部函式對外部作用域而非全域性作用域的變數的引用)。閉包指的是:函式內部函式對外部作用域而非全域性作用域的變數的引用。 提示:之前外面都是通過引數將外部的值傳給函式,閉包提供了另一種思路,包起來嘍,包起呦,包起來哇。
def outter():
    x 
= 1 def inner(): print(x) return inner f = outter() def f2(): x = 2 f() f2()
outputs
1    
為函式傳參的方式二:包給函式 先定義一個有參函式,在這個有參函式內定義一個無參函式,然後在無參函式內寫入需要的程式碼塊,然後返回無參函式的函式名,這樣就可以在函式外部,將有參函式賦值給變數名的方式來進行多次呼叫。
def outter(x):
    x = 1
 
    def inner():
        print(x)
 
    
return inner f = outter(6) f() f() # 檢視閉包的元素 print(f"f.__closure__[0].cell_contents:{f.__closure__[0].cell_contents}")
Outputs
macname@MacdeMacBook-Pro py % python3 cccccc.py
1
1
f.__closure__[0].cell_contents:1
macname@MacdeMacBook-Pro py %