閉包函式和裝飾器

2022-09-17 07:54:10 字數 975 閱讀 4867

閉包函式

#作用域關係在函式定義階段時就已經固定死了,與呼叫位置無關

# 即:在任意位置呼叫函式都需要跑到定義函式時尋找作用域關係

# def f1():

# x=1

# def inner():

# print(x) #x最後還是等於1,因為只看定義階段,

## return inner

## func=f1()

## def f2():

# x=111111

# func()

## f2()

# 閉包函式:

# 閉指的是:該函式是乙個內部函式

# 包指的是:指的是該函式包含對外部作用域(非全域性作用域)名字的引用

# def outter():

# x = 1

# def inner():

# print(x)

## return inner #outter()拿到的是inner的位址。

## f=outter()

## def f2():

# x=1111111

# f()

## f2()##

# def f3():

# x=4444444444444

# f()

## f3()

# 注意:當函式體需要傳值的時候,有兩種方法:

# 為函式體傳值的方式一:使用引數的形式

# def inner(x):

# print(x)

## inner(1)

# inner(1)

# inner(1)

# 為函式體傳值的方式二:包給函式

函式裝飾器和閉包

裝飾器是可呼叫的物件,其引數是另乙個函式 被裝飾的函式 裝飾器可能會處理被裝飾的函式,然後把它返回,或者將其替換成另乙個函式或可呼叫物件。裝飾器通常把函式替換成另乙個函式 defdeco func definner print running inner return inner deco def ...

閉包函式和裝飾器

目錄 二 閉包函式的應用 裝飾器閉包 閉是封閉 函式內部巢狀函式 包是包含,閉包是指該內部函式對外部作用域而非全域性作用域的變數的引用。為函式傳參的方式一 使用引數的形式def func x print x func 1 為函式傳參的方式二 包給函式def outter x x 2 def inne...

閉包函式和裝飾器

目錄裝飾器 閉包即函式內部函式對外部作用域而非全域性作用域的引用,說白了就是將函式內部的變數拿到全域性來使用,還不會修改區域性變數的值 def outter x 5 def inner return x return inner f outter x f 1 print f print x 5 6使...