1. 程式人生 > >9.1裝飾器前提

9.1裝飾器前提

閉包 裝飾器基礎前提 Python

裝飾器三個前提:

1. 作用域:原則:L E G B
2. 高階函數:成立條件:①函數作為函數參數輸入,或者②函數做為返回值輸出;
3. 閉包:如果在一個內部函數裏,對在外部作用域(但不是在全局作用域)的變量進行引用,那麽內部函數就被認為是閉包(closure)

def outer():
    x=10
    def inner():
        print(x)
    return inner

print(outer())
# <function outer.<locals>.inner at 0x00000068BEC8D158>
outer()()
# 10

f=outer()
f()
# 10

如上實例:inner就是內部函數,inner裏引用了外部作用域的變量x(x是在外部作用域outer裏面,但不是全局變量),則這個內部函數inner就是一個閉包。
閉包=函數塊+定義函數時的環境,inner就是函數塊,x就是環境,當然這個環境可以有很多,不止一個簡單的x。

大家對內容有任何問題,歡迎留言,定在第一時間解答,謝謝大家!

9.1裝飾器前提