1. 程式人生 > 其它 >Python函式的巢狀呼叫

Python函式的巢狀呼叫

技術標籤:【Python學習專區】你不可錯過精彩內容Python函式python程式語言

函式的巢狀呼叫

函式內部,呼叫其他函式。
呼叫之後,又將程式控制權返回給呼叫者,接著繼續執行。
程式例項1:

def create_building():
    create_room()
    create_stair()
def create_room():
    print('開始建立房間')
    print('正在建立房間')
    print('建立房間完成')
def create_stair():
    print('開始建立電梯')
    print('正在建立電梯'
) print('建立電梯完成') create_building()

在這裡插入圖片描述

函式內部,定義了新的函式。
函式內部定義的函式,只有函式內部才能呼叫它。
程式例項2:

def test1():
    print("test1()開始執行")
    def test2():
        print("test2()開始執行")
    test2()
test1()

在這裡插入圖片描述

函式內部定義的函式,如果外部呼叫的時候,會報錯。
程式例項3:

def test1():
    print("test1()開始執行")
    def test2
(): print("test2()開始執行") test2()

在這裡插入圖片描述
提示:NameError: name ‘test2’ is not defined

函式內部的變數和外部的變數,類似於區域性變數和全域性變數的關係。
程式例項4:

def test1():
    a= 10
    print("test1()開始執行")
    print(f"test1()內部變數a的值是{a}")
    def test2():
        a = 100
        print("test2()開始執行"
) print(f"test2()內部變數a的值是{a}") test2() test1()

在這裡插入圖片描述

那麼在test2()函式內部要去修改外部test1()函式內部的變數a,怎麼辦呢?
答案是,不是用golbal關鍵字,而是用nonlocal關鍵字。
程式例項5:

def test1():
    a= 10
    print("test1()開始執行")
    print(f"test1()內部變數a的值是{a}")
    def test2():
        nonlocal a
        print("test2()開始執行")
        print(f"test2()內部變數a的值是{a}")
    test2()
test1()

在這裡插入圖片描述