python 函式巢狀的學習

2021-09-11 05:15:47 字數 1856 閱讀 4605

函式巢狀不同於閉包,不能在函式外面使用。

通過函式巢狀可以隱藏函式,使之成為私有函式。

使用巢狀可以為函式增加一些附加處理,使得函式更加健壯

#巢狀就是函式中的函式

#通過巢狀可以使內層函式隱藏起來,使之作為私有函式。

#巢狀可以為函式增加一些附加處理,能夠使得函式更加健壯。

def f_outer(x):

def f_inner():

return x+1

number=f_inner()#必須在函式內例項化,函式體內是其作用域。

print(number)

print("關於巢狀的定義:")

f_outer(100)

#多級巢狀

print("多極巢狀:")

def nest1(x):

print("------------->nest1",x)

def nest2():

print("--------------->nest2",x+1)

def nest3():

print("------------->nest3",x+3)

nest3()

nest2()

nest1(100)

##利用巢狀開啟檔案

#常規開啟檔案方法是這樣的:

# def display_file(filename):

# if isinstance(filename,str):

# with open(filename,"r") as f:

# for line in f:

# print(line)

# display_file("data.txt")

#利用巢狀使之更健壯

def print_file(file):

def inner_print(fileprocess):

for line in fileprocess:

print(line,end="")

if isinstance(file,str):

with open(file,"r") as f:

inner_print(f)

else:

inner_print(file)

print_file("data.txt")

輸出是:

「data.txt」源檔案目錄下,內容如上(士多啤梨...土豆)。

另外,關於閉包__closure__屬性的理解

def func1(school):

print("學校名稱",school)

def func2(banji):

print("%s,%s"%(school,banji))

return func2

f1=func1("shida")

print("___________")

print(f1.__closure__)#列印結果是元組,元組個數代表的是閉包所引用的上次函式的元素個數

print(f1.__closure__[0])#結果是元組,可以使用索引的方式檢視

print(f1.__closure__[0].cell_contents)#檢視指定元組所對應的應用上層引數的值

f1("15班")

輸出是:

python巢狀函式

也叫內部函式 巢狀函式裡面兩個重要的概念 變數作用域和函式閉包 1.變數作用域 內部函式可以直接讀取訪問外部函式變數,但是不能修改 訪問規則是從內到外函式逐級尋找變數 usr bin env python def outer a i a 1 def inner j i 1 def innest pr...

python 函式巢狀

1 函式的巢狀呼叫 def my max x,y if x y return x else return y def my max4 a,b,c,d x my max a,b y my max c,d print my max x,y max 4 my max4 1,5,6,0 2 函式的巢狀定義1...

Python中函式巢狀以及函式巢狀的繼承

a 10 b 0 c 5 try print a的值是 d,b的值是 d a,b f c.open a.txt print f d a b print d除以 d的值為 d a,b,d except zerodivisionerror,attributeerror as msg print 程式出錯...