python函數參數的不同

大家讲道理
發布: 2017-05-28 09:56:40
原創
1730 人瀏覽過

在運用python的過程中,發現當函數參數list 的時候,在函式內部呼叫list.append()會改變形參,與C/C++的不太一樣,查閱相關資料,在這裡記錄一下。 #python中id可以取得

物件

的記憶體位址

>>> num1 = 10>>> num2 = num1>>> num3 = 10>>> id(num1)4299190320>>> id(num2)4299190320>>> id(num3)4299190320
登入後複製


可以看到num1、num2、num3三個物件指向的是一個位址,python在這裡採用的是一種叫做

引用

計數的方式來完成的,很類似C++zhong的智慧指針,變數賦值給變數相當於同一物件參考計數器+1,而不是重新分配空間。 #list1與list3指向同一空間,list2指向另外的一處位址。過程中存在兩個規則:

透過引用將參數複製到局部作用域的物件中,意味著用來存取函數參數的變數於提高給函數的物件無關,因為有一個複製問題,這和
C語言

是相同的。 。 ##
>>> list1 = [,>>> list2 = [,>>> >>> 4302498128
登入後複製


結果如下:

    #
def incrInt(num):
    pId(num)
    num += 1;
    pId(num)def incrList(listArg):
    pId(listArg)
    listArg.append(1);
    pId(listArg)def pId(arg):    print id(arg)
num1 = 10pId(num1)
incrInt(num1)print(num1)

list1 = [0,2]
pId(list1)
incrList(list1)print(list1)
登入後複製
  • 可以看到在函數內部,改變int的數值,則num指向了另一塊記憶體位址,而修改list,則是在同一塊記憶體位址。 )兩種類型,元組(tuple)、數值型(number)、

    字串
  • (
  • string

    )均為不可變對象,而字典型(dictionary)和列表(list )的物件是可變物件。

  • 以上是python函數參數的不同的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    相關標籤:
    來源:php.cn
    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    作者最新文章
    熱門教學
    更多>
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板