Python什麼是值或引用函式引數

2021-09-07 01:30:44 字數 1090 閱讀 1169

這篇文章是python前往遇到有疑問的功能。

下面一段是原有的基礎教程python函式。

全部引數(自變數)在python裡都是按引用傳遞。假設你在函式裡改動了引數,那麼在呼叫這個函式的函式裡,原始的引數也被改變了。比如:

#!/usr/bin/python

# 可寫函式說明

def changeme( mylist ):

"改動傳入的列表"

print "函式內取值: ", mylist

return

# 呼叫changeme函式

mylist = [10,20,30];

changeme( mylist );

print "函式外取值: ", mylist

傳入函式的和在末尾加入新內容的物件用的是同乙個引用。故輸出結果例如以下:

函式內取值:  [10, 20, 30, [1, 2, 3, 4]]

函式外取值: [10, 20, 30, [1, 2, 3, 4]]

好。看到這裡。自己親手測試一下,**:

def printme(age,str):

str = 'str changed!'

print age,str

return

str = 'ori str'

age = 23

printme(age,str)

print str

輸出結果:

23 str changed!

ori str

好像**不正確啊!不是說函式內部改動了引數的值,那麼實際引數也會變嗎?!

難道它對字串和列表等還不是同等對待?

有經驗的人都知道,

在python中,strings, tuples, 和numbers是不可更改的物件,而list,dict等則是能夠改動的物件

那麼,就記住紅色文字的這句話吧,你想改動不可更改的物件時。事實上就開闢了乙個新新物件的儲存空間,這就是為什麼有問題的全球範圍和區域性範圍。

python函式是值傳遞還是引用傳遞

在網上看python的基礎知識,看到函式這一章的時候,看到這麼一段話 所有引數 自變數 在python裡都是按引用傳遞。如果你在函式裡修改了引數,那麼在呼叫這個函式的函式裡,原始的引數也被改變了。def changeme mylist 修改傳入的列表 print 函式內取值 mylist retur...

什麼是值傳遞和引用傳遞

關於值型別與引用型別,值傳遞與引用傳遞的歸納,總結一下,分享給大家 1 值型別預設存放在棧中,但當值型別是在引用型別中宣告的時候,則存放在其所在的引用型別的堆中。2 引用型別存放在堆中,其在堆中的記憶體位址放在棧中。1 值型別引數可以值傳遞,也可以通過ref out關鍵字修飾,進行引用傳遞。2 引用...

面試題 什麼是右值引用?右值引用與左值引用的區別

什麼是左值引用呢?左值引用,就是繫結到左值的引用,通過 來獲得左值引用。那麼,什麼是左值呢?左值,就是在記憶體有確定儲存位址 有變數名,表示式結束依然存在的值。左值可以分為兩類 非常量左值和常量左值 同理,右值也可以分為兩類 非常量右值和常量左值。左值引用舉例說明 int a 10 非常量左值 有確...