函式的巢狀閉包以及裝飾器的了解

2022-09-10 10:12:17 字數 2067 閱讀 8654

目錄

# 作用域

命名空間所能作用的範圍

# 內建命名空間

程式任何階段任何位置都可以使用(全域性有效)

# 全域性命名空間

程式任何階段任何位置都可以使用(全域性有效)

# 區域性命名空間

一般情況下只在各自的區域性命名空間中有效

# 關鍵字global: 區域性修改全域性變數

# 關鍵字nonlocal: 內部區域性修改外部區域性

'''如果想在區域性修改全域性資料

如果資料為不可變型別則需要關鍵字global和nonlocal宣告

如果資料為可變型別則無需關鍵字global和nonlocal宣告

# 函式遇到括號就會被呼叫

# 巢狀呼叫:函式內部呼叫其他函式

# 函式體內部定義其他函式

# 將複雜的功能全部隱藏起來 暴露乙個簡單的介面

# 閉 :定義在函式內部的函式

# 包 :內部函式使用了外部函式的命名空間中的名字

'只有同時滿足這兩個特徵的函式才能叫做閉包函式'

# 閉包函式其實是給函式傳參的第二種方式

def index(username):

print(username)

def my_max(a, b):

if a > b:

return a

return b

def outer(x,y):

# x = 2

# y = 40

def my_max():

if x > y:

return x

return y

return my_max

res = outer(2,4)

print(res())

"""

裝飾器並不是乙個新的知識

而是由我們之前所學習的 命名空間 函式物件 閉包函式組合而來

"""# 器:指的是工具

# 裝飾:給被裝飾的物件新增額外功能

# 裝飾器的原則就是

'''裝飾器的原則

開放封閉原則

開發:對擴充套件開放

封閉:對修改封閉

''''裝飾器核心思想

在不改變被"裝飾物件內部**"和"原有呼叫方式"的基礎之上新增額外功能'

裝飾器 高階函式 閉包 函式巢狀

裝飾器 本質就是函式,作用是給其他函式新增新功能 1 不修改被修飾函式的源 2 不修改被修飾函式的呼叫方法 import time deftimmer func def args,kwargs start time time.time res func args,kwargs end time ti...

裝飾器2 高階函式 函式巢狀 閉包

高階函式定義 1.函式接受的引數是乙個函式名 2.函式的返回值是乙個函式名 3.滿足上訴條件任意乙個,都可稱之為高階函式 1 deftest 2print 你好啊 3 defhigh func func 4print 高階函式 5func 6high func test 7輸出 8高階函式 9 你好...

python閉包以及裝飾器

通俗的定義 如果在乙個內部函式裡,對在外部作用域 但不是在全域性作用域 的變數進行引用,那麼內部函式就被認為是閉包 closure 它只不過是個 內層 的函式,由乙個名字 變數 來指代,而這個名字 變數 對於 外層 包含它的函式而言,是本地變數 1 示例一 2 usr bin python 3 en...