1.命名空間和作用域
命名空間
載入內建命名空間
python直譯器自帶的變數和函式
開啟python直譯器自動載入內建命名空間
全域性命名空間
程式從頭到尾的自定義變數和函式
從頭到尾載入
區域性命名空間
函式內部的自定義變數和函式(內嵌函式)
當函式被呼叫時,建立該函式的區域性命名空間,當函式執行結束時,**命名空間
取值順序:區域性命名空間——>全域性命名空間——>內建命名空間
作用域全域性作用域
包含:內建命名空間、全域性命名空間
區域性作用域
區域性命名空間
列印全域性作用域的值:print(globals())
列印當前作用域的值:print(locals())
在函式內部,對全域性變數進行修改(自加等),需要加在函式內部加 global關鍵字定義變數
對應不可變資料型別區域性可以檢視全域性,不可以修改全域性
2.巢狀函式和作用域鏈
巢狀函式
函式的呼叫
函式的定義
作用域鏈
由內到外
nonlocal
用在巢狀函式中,修改他上一次的區域性變數,只用在區域性變數
在內部函式中,修改外部函式的變數
3.函式名的本質
指向乙個記憶體位址,可以看作是變數
賦值,既被引用
當函式的引數、返回值
可以當容器型別(可變資料型別)的引數
4.閉包
定義:巢狀函式,並且內部函式呼叫,外部函式的變數,內部函式是閉包
判斷閉包函式的方法:列印函式名.__closure__,有cell
deff1():
a = 1
deff2():
(a)
return
f2res =f1()
res()
Python3 高階函式
滿足其一即是 函式名作實參傳給函式 不修改被修飾函式源 的情況下為其新增功能 返回值含函式名 不修改函式呼叫方式 def add x,y,f return f x f y res add 3,6,abs print res 1 import time defsuspend time.sleep 3 ...
python3 函式 高階函式
函式本身也可以賦值給變數,即 變數可以指向函式 f abs print f 輸出 in function abs 對於abs 這個函式,完全可以把函式名abs看成變數,它指向乙個可以計算絕對值的函式。如果把abs指向其他物件 abs 10 print abs 10 輸出 traceback most...
高階函式與Python3幾個內建函式
這篇文章簡談高階函式與python3中幾個內建函式的例題 高階函式就是能接受函式作引數的函式。我們知道變數可以指向函式,而函式的引數可以接受變數,乙個函式可以接收另乙個函式作為引數,能接受函式作為引數的函式就是高階函式。比如說,乙個簡單的高階函式 def shu 1 print 宇宙之大 def s...