前言

串列也可以做為引數在函式之間被傳遞。若函式之間傳遞的引數為串列元素,則其引數傳遞的方式是屬於傳值呼叫。若函式之間傳遞的引數是整個串列,則其引數傳遞的方式為參考呼叫。

傳遞串列元素

函式之間的引數如果是使用串列元素傳遞,就與使用變數傳遞的情況一樣,皆為傳值呼叫。

[簡例] 建立Triple()函式,使傳入的引數變成三倍。觀察函式呼叫前、呼叫時、呼叫後,其相對的實引數與虛引數之間變化情況。 (檔名:callByValue.py)

[結果]

呼叫 Triple() 函式前 ⋯
x = 10      A[1] = 4
 
執行 Triple()函式 ------
x = 30      y = 12
 
呼叫 Triple() 函式後 ⋯
x = 10      A[1] = 4

傳遞整個串列

若函式之間的引數使用整個串列傳遞時,則為參考呼叫。此種情況在呼叫敘述中的實引數必須使用要傳入的串列名稱,因串列名稱是編譯器分配給串列占用記憶體的起始位址。而在被呼叫函式對應的虛引數,也會是一個串列。

[簡例] 建立Triple()函式,傳入的引數為串列名稱,並傳入的串列各元素變成三倍。觀察函式呼叫前、呼叫時、呼叫後,其相對的串列實引數與串列虛引數之間的變化情況。 (檔名:callByRef.py)

[結果]

呼叫 Triple() 函式前⋯⋯⋯
串列 arr = [2,4,6,8,10]
 
執行 Triple() 函式 ------
串列 lst=[6,12,18,24,30]
 
呼叫 Triple() 函式後⋯⋯⋯
串列 arr = [6,12,18,24,30]

相關主題與延伸閱讀