1. 程式人生 > >python中的函式原理

python中的函式原理

1.函式是一個可執行語句(邏輯語句,不是物理語句)

2.函式執行是通過繫結函式名和當前本地名稱空間的一個函式物件(由可執行程式碼圍繞的一個包裝器)

3.該函式物件中包含一個對全域性名稱空間的一個引用,當該函式被呼叫時,該引用作為全域性名稱空間來使用

4.一個函式定義可能被一個或多個裝飾器包裹,函式定義完成,其裝飾表示式在包含該函式的範圍內被評估,結果必須是可呼叫的,該呼叫以函式物件作為唯一呼叫引數

5.呼叫返回值和函式名繫結,而不是函式物件

6.多個裝飾器在巢狀中應用

------------------------------------------------------------------------------------------

1.函式執行為該函式本地變數引入一個新的符號表,更準確的說,函式中所有變數的賦值都是將值儲存在本地符號表
2.當引用該變數時,首先在本地(被調函式)符號表中查詢,然後在上一層函式的本地符號表中查詢,然後在全域性符號表中查詢,最後在python內建名稱表中查詢
    1.因此在函式內部,無法直接給全域性變數直接賦值(第1條),但是可以引用該全域性變數(第2條)


1.當一個函式被呼叫時,實參會被引入該函式的本地符號表;因此,引數是通過"值傳遞"的(該值是物件的引用,而不是該物件的值).當一個函式呼叫另一個函式,會為該呼叫建立一個新的符號表
    1.實際上在描述"值傳遞"時,描述為物件引用更恰當


1.一個函式定義會在當前符號表中引入該函式名,函式名的值的型別是一個可以被直譯器識別為使用者自定義型別的函式型別
2.函式名的值可以被賦值給其他名稱,該名稱和原來函式名稱等效,這是一個通用的命名規則

------------------------------------------------------------------------------------------

1.python中所有函式都有一個返回值

1.函式中有return

1.return後有表示式,則返回該表示式的結果

2.return後無表示式,返回None

2.函式中沒有return,當執行到函式尾,返回None

eg:>>> def fun():
...        print("test")
...
>>> print(fun())
test
None
>>>