>>num1=10>>>num2=num1>>>num3=10>>>id(num1)>>>id(num2)>>>id(num3)可以看到num1、num2、num3三個(gè)對(duì)象指向的是一個(gè)地址,python在這里采用的是一種叫做引用計(jì)數(shù)的方式來(lái)完成的,很類" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

老生常談python函數(shù)參數(shù)的區(qū)別(必看篇)

系統(tǒng) 1839 0

在運(yùn)用python的過(guò)程中,發(fā)現(xiàn)當(dāng)函數(shù)參數(shù)為list的時(shí)候,在函數(shù)內(nèi)部調(diào)用list.append()會(huì)改變形參,與C/C++的不太一樣,查閱相關(guān)資料,在這里記錄一下。

python中id可以獲取對(duì)象的內(nèi)存地址

            
>>> num1 = 10
>>> num2 = num1
>>> num3 = 10
>>> id(num1)
>>> id(num2)
>>> id(num3)
          

可以看到num1、num2、num3三個(gè)對(duì)象指向的是一個(gè)地址,python在這里采用的是一種叫做引用計(jì)數(shù)的方式來(lái)完成的,很類似C++zhong的智能指針,變量賦值給變量相當(dāng)于同一對(duì)象引用計(jì)數(shù)器+1,而不是重新分配空間。

對(duì)于list對(duì)象可以看到下面的結(jié)果:

            
>>> list1 = [0,1]
>>> list2 = [0,1]
>>> id(list1)
>>> id(list2)
>>> list3 = list1
>>>id(list3)
          

list1與list3指向同一空間,list2指向另外的一處地址。

python中的函數(shù)傳參是對(duì)象傳遞,同時(shí)也存在局部與全局的問(wèn)題,在傳參過(guò)程中存在兩個(gè)規(guī)則:

通過(guò)引用將參數(shù)復(fù)制到局部作用域的對(duì)象中,意味著被用來(lái)訪問(wèn)函數(shù)參數(shù)的變量于提高給函數(shù)的對(duì)象無(wú)關(guān),因?yàn)榇嬖谝粋€(gè)復(fù)制問(wèn)題,這和C語(yǔ)言是相同的。而且修改局部對(duì)象不會(huì)改變?cè)紨?shù)據(jù)。

可以在適當(dāng)位置修改可變對(duì)象。可變對(duì)象主要就是列表和字典,這個(gè)適當(dāng)位置實(shí)質(zhì)上就是前面分析的局部子對(duì)象的修改不會(huì)改變字典對(duì)象或者列表對(duì)象的ID

            
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 = 10
pId(num1)
incrInt(num1)
print(num1)

list1 = [0,2]
pId(list1)
incrList(list1)
print(list1)
          

結(jié)果如下:

            
python test.py
4299181904
10
4336979912
[0, 2, 1]
          

可以看到在函數(shù)內(nèi)部,改變int的數(shù)值,則num指向了另一塊內(nèi)存地址,而修改list,則是在同一塊內(nèi)存地址。

在python中,對(duì)象可分為可變(mutable)和不可變(immutable)兩種類型,元組(tuple)、數(shù)值型(number)、字符串(string)均為不可變對(duì)象,而字典型(dictionary)和列表(list)的對(duì)象是可變對(duì)象。

所以在傳參過(guò)程中要注意下。

以上這篇老生常談python函數(shù)參數(shù)的區(qū)別(必看篇)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 在线观看中文字幕第一页 | 久久公开视频 | 一国产大片在线观看 | 狠狠色丁香久久婷婷综合_中 | 成人久久18免费网站 | 亚洲国产视频在线观看 | 亚洲一区二区三区高清 | 中文字幕亚洲精品第一区 | 国产精品久久视频 | 99热久久只有精品99只有精品 | 成人国产免费 | 久久精品国产一区二区三区不卡 | 国产美女一级高清免费观看 | 国产第一页久久亚洲欧美国产 | 国产精品福利视频一区二区三区 | 欧美片欧美日韩国产综合片 | 综合 欧美 国产 视频二区 | 欧美a在线 | 激情五月婷婷在线 | 亚洲美女视频网站 | 国内精品久久久久久久亚洲 | 久久国产中文字幕 | 中国在线播放精品区 | 一区二区三区四区 | 欧美视频成人 | 婷婷免费高清视频在线观看 | 日本人又黄又爽免费视频 | 国产欧美日韩在线播放 | 天天综合天天做 | 久久亚洲综合 | 亚洲第一视频在线播放 | 欧美一级特黄一片免费 | 国产日韩一区二区三区在线观看 | 中文字幕第13亚洲另类 | 免费观看国产精品视频 | 国产日韩一区 | 午夜视频欧美 | 成人毛片18岁女人毛片免费看 | 91精品国产91久久综合 | 国产精品亚洲专区在线播放 | 天海翼精品久久中文字幕 |