函式的物件 巢狀及作用域

2022-02-01 01:45:41 字數 2835 閱讀 2088

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