(1)函式名可以被傳遞
(2)函式名可以被當做引數傳遞給其餘函式
(3)函式名可以當做函式的返回值
(4)函式名可以當做容器型別的引數
例如:
#函式物件函式名可以被傳遞給變數
deffunc():
print('
test')
f = func #
變數名f指向函式的記憶體位址 通過該記憶體位址該變數可以找到函式對應的**塊
f() #
變數名f呼叫函式
print(f) #
#函式名可以當做引數傳遞給其餘函式
deffunc():
print('
test')
deffunc1(args):
(args)
func1(func)
#指向func的記憶體位址
func1(func()) #
test 沒有寫return 預設返回none
#函式名可以當做函式的返回值
deffunc():
print('
test')
defindex():
return
func
print(index) #
index() #
呼叫函式index
res = index() #
輸出index的返回值其指向func的記憶體位址 因為return指向的是func
res() #
呼叫函式func 輸出test 在上述中res已經找到啦func的記憶體位址 通過記憶體位址可以呼叫函式
#函式名可以當做容器型別裡的元素
defindex():
return'sr
'list = [index,index()] #
函式的記憶體位址 以及函式的值
print(list) #
[, 'sr']
定義:函式內層在定義函式
作用:可以將複雜的問題進行簡單化
例如:
#函式的巢狀函式巢狀 比較大小
#a,b,c,d求出其中的最大值
#步驟一:兩兩比較 選出其中大的在與第三個值比較
defmy_max(x,y):
if x>y:
return
x
returny#
步驟二:呼叫步驟一中兩兩比較的函式 在與第三個比較
defindex(a,b,c,d):
res=my_max(a,b)
res1=my_max(res,c)
res2=my_max(res1,d)
return
res2
print(index(1,2,3,4)) #
4
(1)定義:存放變數名與變數值繫結關係的地方
例如:
x = 1(2)命名空間的分類#ps:其中變數值存在記憶體中 那麼變數名則存在記憶體空間中
(1)內建命名空間:用來存放python給我們定義的變數名
例如:
len(2)全域性命名空間:當執行python檔案的時候 以檔案為基礎載入進入全域性命名空間maxprint
例如:
x = 1(3)區域性命名空間:屬於函式子**塊裡的建立的名稱while
true:
y == 2
#ps 無論while 與 if裡面巢狀多少層子**都屬於全域性命名空間
例如:
def(3)命名空間的載入順序index():
number = [1,2,3]
user_info =
#ps:其中裡面的number與user_info屬於區域性名稱
(1)當啟動python直譯器的時候 載入內建空間
(2)當執行python檔案的時候 載入全域性命名空間
(3)當呼叫函式裡的子**塊的時候 載入的是區域性命名空間
(4)命名空間的查詢順序
(1)如果處於全域性:全域性--->內建
例如:
#(2)如果處於區域性:區域性--->全域性--->---內建處於全域性位置
len = '
處於全域性命名空間
'def
index():
len = '
處於區域性命名空間
'print(len) #
站在全部呼叫的是全域性命名空間 處於全域性命名空間
#全域性命名空間不存在
defindex():
len = '
處於區域性命名空間
'print(len) #
內建空間
例如:
當區域性空間存在值的時候作用域範圍:max=1
deff1():
#max=2
deff2():
max=3
print(max) #
3 直接查詢查詢區域性空間位址
f2()
f1()
print(max) #
1 查詢的全域性空間位址
#當區域性空間不存在值的時候
max=1
deff1():
deff2():
print(max) #
1 查詢的全域性空間位址 區域性空間位址不存在值
f2()
f1()
print(max) #
1 查詢的全域性空間位址
(1)全域性作用域:內建命名空間 與全域性命名空間都屬於該範圍 全域性有效 全域性存活
(2)區域性作用域:區域性命名空間屬於該範圍 區域性存活 區域性有效
ps:函式作用域在定義階段就已經作用好了 與函式的呼叫位置無關
x = 1作用域修改defindex():
global
x x = 999
(x)index()
#999
print(x) #
999 global將全域性名稱給修改了
deffunc():
x = 1
defindex():
nonlocal x
x = 2index()
(x)func()
#2
命名空間與作用域,函式物件,函式巢狀,閉包函式
命名空間的分類 全域性命名空間 在py檔案中頂格編寫的 執行之後都會存入全域性命名空間 區域性命名空間 函式體 執行之後產生的都是區域性命名空間 內建命名空間 input built in 內建 全域性命名空間 x 10 變數名x y 20 變數名y f 1 0 z 30 with open a.t...
函式物件 函式的巢狀 命名空間及作用域
函式物件 定義 函式是第一類物件 函式名指向的值可以被當做引數傳遞 1.函式名可以被傳遞 name jason x name print x print id x def func print from func print func print id func f func func print ...
函式物件,函式巢狀,命名空間與作用域 未補充完
一,函式物件 函式是第一類物件,即函式可以當做資料傳遞 1.可以被引用 2.可以當做引數傳遞 len x deffoo m print m m foo func 3.返回值可以是函式 def foo x x func return x return func res foo func print r...