python巢狀函式

2021-07-28 07:22:42 字數 844 閱讀 7462

也叫內部函式

巢狀函式裡面兩個重要的概念:變數作用域和函式閉包

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