閉包函數:閉包
def sum_late(*args):函數
def cals_sum():
ax = 0
for i in args:
ax = ax + i
return ax # 這裏返回了一個階層相加的結果io
return cals_sum # 這裏返回內部函數function
print(sum_late(1, 2, 3, 4)) # 給外部函數傳入一個元組,返回一個內部函數(注意這裏返回的是一變量
個函數不是一個值)循環
cals_sum = sum_late(1, 2, 3, 4) # 把外部函數的值賦值給內部函數,執行這個函數,最後返回一個相引用
加的結果return
print(cals_sum()) # 這裏輸出一個循環累加的結果參數
執行的結果爲:
>>> <function sum_late.<locals>.cals_sum at 0x7f087f671730>
>>> 10
函數稱之爲閉包,由於在函數sum_late中又定義了函數cals_sum,而且內部函數cals_sum能夠引用外
部函數sum_late的參數和局部變量.當sum_late返回函數cals_sum時,相關參數和變量都保存在返回
的函數中,因此稱爲閉包.