Python3——嵌套函數


 顧名思義,就是函數內還有函數

 

#嵌套函數
def func1():
    print('func1')

    def func2():
        print('func2')

func1()

 結果:

func1

為什么函數func2沒有被執行?

任意一個函數定義完成之后,如果沒有人通過名字調用它,就永遠不會執行

那如何調用func2?

def func1():
    print('func1')

    def func2():
        print('func2')
    
    func2()

func1()

 結果:

func1
func2

回顧全局變量和局部變量:

age = 18  #曾祖父

def func1():  #爺爺
    age = 20
    print(age)

    def func2():  #爸爸
        age = 25
        print(age)

        def func3():  #兒子
            print(age)
        func3()

    func2()

func1()

 結果:

20
25
25

函數引用變量的時候是從該函數內部一層一層的向外找

還有一點值得注意的是,要遵循代碼的執行順序,想要被調用的變量不能在被執行函數的下面

age = 18

#正確:
def func1():
    # age = 20   放在上面

    def func2():
        print(age)

    age = 20    #放在下面,其實都是放在func2的上面
    func2()

func1()

#錯誤:
def func1():

    def func2():
        print(age)

    func2()
    age = 20   #不能放在引用該變量的函數下

func1()

 結果:

#正確:
20

#錯誤:
NameError: free variable 'age' referenced before assignment in enclosing scope


免責聲明!

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



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