也叫內部函式
巢狀函式裡面兩個重要的概念:變數作用域和函式閉包
1. 變數作用域
內部函式可以直接讀取訪問外部函式變數,但是不能修改;訪問規則是從內到外函式逐級尋找變數
#!/usr/bin/env python
def outer(a):
i = a + 1
def inner():
j = i + 1
def innest():
print "innest: i=%d,j=%d" % (i, j)
innest()
inner()
outer(1)
$ python t.py
innest: i=2,j=3
**函式,innest可以訪問inner的變數,也可以訪問outer的變數,但是均不能修改他們。(如何才能修改,我也不知道,但是python 3提供機制修改)
2. 函式閉包
#!/usr/bin/env python
def outer(a):
i = a + 1
def inner():
print "inner: i=%d" % i
return inner
foo = outer(1)
foo()
$ python t.py
inner: i=2
聰明的程式設計師立馬就有疑問了,為什麼foo()還能正常執行呢,outer函式已經執行完畢退出了啊,其中的引數a和內部變數i怎麼還能被foo使用呢,答案很簡單這就是閉包的概念,請自行搜搜關鍵字:python 閉包
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 程式出錯...
python巢狀函式和高階函式
python巢狀函式和高階函式 1.巢狀函式 函式巢狀 在乙個函式的函式體內用def宣告,不加叫呼叫 def grandpa x 1def dad x 2def son x 3print x son dad grandpa 2.高階函式 2.1定義 將乙個函式作為變數傳給另乙個函式 import t...