jpython 傳入引數 python中引數傳遞

2021-10-18 19:17:17 字數 1293 閱讀 5977

在程式語言中,函式的引數傳遞有兩種情況:

按值型別傳遞

num = 10

def double(arg):

arg=arg*2

print(arg)

double(num)

呼叫該函式,傳入乙個變數,其實傳入的是該變數的乙個副本,該變數在函式中發生變化,不影響函式外面該變數。

按引用型別(位址)傳遞

def change(arg):

print(arg)

saying = [42,34,55]

change(saying)

呼叫該函式,傳入乙個變數,但是函式內部卻是維護該變數的乙個指向鏈結,鏈結到函式外面的這個變數;當傳入函式的這個變數在函式內部發生改變,直接影響到外面的最初變數,因為有指向關係。

python中的函式引數既支援按值呼叫,也支援按引用呼叫。

python中的變數是物件引用:變數儲存的值是記憶體位址。當函式被呼叫的時候,直譯器會檢視傳入的變數(記憶體位址)指的那個指的型別,如果是乙個可變型別的值,就按照引用傳遞變數;如果是乙個非可變型別的值,就考慮按照值傳遞變數。

可變型別:字典dict,列表list,集合set:

傳入函式中的變數,函式內部的修改都會反映到函式外面,即最初始的變數會受到影響,畢竟這些初始的變數是可變型別。

不可變型別:字串srt,整數int,元組trulp:

在這中,函式對變數的任何修改都是函式私有的,不會反映到函式外面,由於這些變數是不可變的,所以不能修改。

例外:def double(arg):

根據上面所說的,為什麼這個函式裡面的引數,傳入的乙個可變型別,函式內部發生了改變,結果卻沒有反映到函式外面呢?

我們考慮到這條語句:arg = arg*2

首先,傳入的變數,先執行arg*2,所產生的新的變數(新物件的引用),重新賦值給原先的變數arg,覆蓋其原先的引用,導致原先的變數arg與外面初始變數之間的聯絡斷了。既然關係斷了,那麼函式裡面的arg 的改變,沒有反映出來,所以並沒有影響到函式外面的變數。

jpython 傳入引數 python函式傳值

python函式傳值到底傳什麼?有很多文章講過這個,但是前兩天被問到居然還是有點不清楚,有點蒙,今天就具體好好看看這個。def test a a 10 print a 這個函式接受乙個輸入,假設輸入20,那麼輸出10,python在傳遞引數的將20的引用傳入,然後函式體內重新賦值,新建了乙個物件10...

檢查傳入引數

對函式傳入的引數進行檢查 1 既能提高程式的效率 2 也能使程式變得更健壯,防止程式執行時崩潰 可從以下方面入手 1 傳入指標,需檢查指標是否有效。void f char p 2 傳入的是陣列下標,對下標範圍檢查。intoperator int c iindex 當然,還有其他很多情況,對函式傳入的...

php傳入引數

專案中時常會使用php編寫指令碼,進行一些統計與批量更新的需求需要進行操作 其中使用的方式主要是getopt函式,寫法如下 opt getopt m n value m opt m value n opt n 命令列下執行的方式是php test.php m hisen n king if argc...