函式巢狀不同於閉包,不能在函式外面使用。
通過函式巢狀可以隱藏函式,使之成為私有函式。
使用巢狀可以為函式增加一些附加處理,使得函式更加健壯
#巢狀就是函式中的函式
#通過巢狀可以使內層函式隱藏起來,使之作為私有函式。
#巢狀可以為函式增加一些附加處理,能夠使得函式更加健壯。
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 程式出錯...