python3函式高階

2022-04-02 06:22:20 字數 977 閱讀 4001

1.命名空間和作用域

命名空間

載入內建命名空間

python直譯器自帶的變數和函式

開啟python直譯器自動載入內建命名空間

全域性命名空間

程式從頭到尾的自定義變數和函式

從頭到尾載入

區域性命名空間

函式內部的自定義變數和函式(內嵌函式)

當函式被呼叫時,建立該函式的區域性命名空間,當函式執行結束時,**命名空間

取值順序:區域性命名空間——>全域性命名空間——>內建命名空間

作用域全域性作用域

包含:內建命名空間、全域性命名空間

區域性作用域

區域性命名空間

列印全域性作用域的值:print(globals())

列印當前作用域的值:print(locals())

在函式內部,對全域性變數進行修改(自加等),需要加在函式內部加 global關鍵字定義變數

對應不可變資料型別區域性可以檢視全域性,不可以修改全域性

2.巢狀函式和作用域鏈

巢狀函式

函式的呼叫

函式的定義

作用域鏈

由內到外

nonlocal

用在巢狀函式中,修改他上一次的區域性變數,只用在區域性變數

在內部函式中,修改外部函式的變數

3.函式名的本質

指向乙個記憶體位址,可以看作是變數

賦值,既被引用

當函式的引數、返回值

可以當容器型別(可變資料型別)的引數

4.閉包

定義:巢狀函式,並且內部函式呼叫,外部函式的變數,內部函式是閉包

判斷閉包函式的方法:列印函式名.__closure__,有cell

def

f1():

a = 1

deff2():

print

(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...