1、函式的物件
函式的第一類物件的含義是函式可以被當做資料處理
# def func(): #func=# print('from func')
# print(func) #列印函式名的位址 加括號即呼叫函式內容
(1)引用
def func(): #func=print('from func')
f=func
print(f)
f()
(2)把自己當成個引數傳給函式
def func(): #func=print('from func')
def foo(m):
# print(m)
m() #現在m就等於func,加括號就返回func函式的內容
foo(func)
3、可以當作函式的返回值
def func(): #func=
print('from func')def foo(x): #x=func
return x #return func
res=foo(func)
print(res) #列印了func函式的記憶體位址
res() #返回了func的內容
4、可以當作容器型別的元素
def func(): #func=print('from func')
l=[func,]
print(l) #列印函式記憶體位址
# l[0]() 通過列表的索引取到函式的記憶體位址,加括號,返回函式內容
func_dic=while true:
msg="""
1 支付
2 取款
3 轉賬
4 檢視餘額
5 退出
6 購物
"""print(msg)
choice=input('>>: ').strip()
if choice == '5':break
if choice not in func_dic:
print('輸入的指令不存在傻叉')
continue
func_dic[choice]()
2、函式的巢狀定義
def f1():def f2():
print('from f2')
f2()
f1()
# from math import pi
# def circle(radius,action='area'): 求面積和周長
# def area():
# return pi*(radius **2 )
# def perimeter():
# return pi *2*radius
# if action == 'area':
# return area()
# if action == 'perimeter':
# return perimeter()
# print(circle(15))
# print(circle(15,action='perimeter') )
函式巢狀的呼叫
def max2(x,y):if x>y:
return x
else:
return y
def max4(a,b,c,d):
res1=max2(a,b)
res2 = max2(res1,c)
res3= max2(res2,d)
return res3
print(max4(2,3,4,5))
3、命名空間與作用域(1)命名空間是存放名字與值繫結關係的地方
(2)命名空間分為三大類
內建命名空間:存放python直譯器自帶的名字(在直譯器啟動時生效,在直譯器關閉時失效)
全域性命名空間:除了內建與區域性名字外,其餘都是全域性命名空間(在檔案執行時生效,在檔案執行完畢時失效)
區域性命名空間:用於存放函式呼叫期間函式體產生的名字(如果呼叫某個函式才會臨時生效,在函式執行完畢後失效)
(3)三種命名空間的載入順序是:
內建-》全域性-》區域性
(4)、作用域作用域:
域指的是區域、範圍,作用域即作用的範圍全域性作用範圍,全域性作用域(內建命名空間與全域性命名空間)
全域性有效,全域性存活
區域性作用範圍,區域性作用域(區域性命名空間)
區域性有效,臨時存活
(5)函式物件+作用域:******x=1def f1()
def inner():# print('from inner',x)
# return inner
## f=f1()
## # print(f)
## def bar():
# x=1111111111111111111111111111111111 #
作用域關係是在函式定義階段就固定死了,但凡呼叫函式都需要跑到定義階段去找作用域關係
# f()
## bar()
函式物件 函式的巢狀 命名空間及作用域
函式物件 定義 函式是第一類物件 函式名指向的值可以被當做引數傳遞 1.函式名可以被傳遞 name jason x name print x print id x def func print from func print func print id func f func func print ...
python 函式巢狀及作用域
函式可以巢狀嗎?當然可以 我們可以看到,外部函式outer func 的函式體中巢狀了乙個函式inner func 並且outer func 體中 還呼叫了內部函式inner func 所以每當呼叫outer func 的時候,都會呼叫一次inner func 我 們來看一下列印結果 我們可以看到,...
函式物件,巢狀,命名空間與作用域
1 函式名可以被傳遞 2 函式名可以被當做引數傳遞給其餘函式 3 函式名可以當做函式的返回值 4 函式名可以當做容器型別的引數 例如 函式名可以被傳遞給變數 deffunc print test f func 變數名f指向函式的記憶體位址 通過該記憶體位址該變數可以找到函式對應的 塊 f 變數名f呼...