python函數嵌套


1. 函數嵌套:

  在一個函數中定義了另外一個函數

def outer():

  def inner():

    print('inner')

  print('outer')

  inner()

outer()

inner()    # 此句會出錯

函數有可見范圍,這就是作用域的概念

內部函數不能被外部直接使用,會拋NameError異常

2. 作用域

一個標識符的可見范圍,這就是標識符的作用域。一般常說的是變量的作用域

全局作用域(global):在整個程序運行環境中都可見

局部作用域:在函數、類等內部可見;局部變量使用范圍不能超過其所在的局部作用域

def fn1():

  x = 1    # 局部作用域,在fn1內可見

def fn2():

  print(x)   # x可見嗎?

print(x)        # x可見嗎?

global使用原則:

  外部作用域變量會內部作用域可見,但也不要在這個內部的局部作用域中直接使用,因為函數的目的是為了封裝,盡量與外界隔離。

  如果函數需要使用外部全局變量,請使用函數的形參傳參解決。

  一句話:不用global,學習它就是為了深入理解變量作用域。

3. 閉包

自由變量:未在本地作用域中定義的變量。例如定義在內存函數外的外層函數的作用域中的變量。

閉包:出現在嵌套函數中,指的是內層函數引用到了外層函數的自由變量,就行成了閉包。很多語言都有這個概念,最熟悉的就是JavaScript

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM