1. 程式人生 > >Python學習--函式呼叫與宣告問題

Python學習--函式呼叫與宣告問題

發現一個奇怪的問題:

Python在函式裡面呼叫另一個函式時,被呼叫函式是不用事先定義的,例如現在這個例子是可以正確執行的:

def test1():
    test()

def test():
    print('test')

test1() 

這個例子中,函式test1()呼叫了函式test(),但是被呼叫的函式是在之後才定義的,對於Python這種解釋型語言來說,應該是會報錯才對的,但是並沒有報錯。下面這種方法就會報錯

test()

def test():
    print('test')

執行結果:


這種現象我覺得應該是這樣的,第一個例子中,真正的函式呼叫發生在最後一行test1(),前面的只是函式定義,而函式定義對函式順序是不敏感的,被呼叫的函式只要在真正執行的語句之前就可以,如下面解釋的那樣

def test1():   #這是定義函式test1()
    test()     #函式test1()中呼叫了test(),此時函式test()還沒有定義,不過沒關係,因為這裡只是定義函式test1(),只要在呼叫test1()的地方之前定義了test()函式就可以!!! 

def test():    #這是定義函式test()
    print('test')

test1()        #這裡是呼叫函式test1()的語句,只要在這句之前定義了test(),程式就不會報錯!!!