目錄
# 作用域
命名空間所能作用的範圍
# 內建命名空間
程式任何階段任何位置都可以使用(全域性有效)
# 全域性命名空間
程式任何階段任何位置都可以使用(全域性有效)
# 區域性命名空間
一般情況下只在各自的區域性命名空間中有效
# 關鍵字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...