一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 老生常談python函數參數的區別(必看篇)

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

2020-11-13 00:23腳本之家 Python

下面小編就為大家帶來一篇老生常談python函數參數的區別(必看篇)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

在運用python的過程中,發現當函數參數為list的時候,在函數內部調用list.append()會改變形參,與C/C++的不太一樣,查閱相關資料,在這里記錄一下。

python中id可以獲取對象的內存地址

?
1
2
3
4
5
6
>>> num1 = 10
>>> num2 = num1
>>> num3 = 10
>>> id(num1)
>>> id(num2)
>>> id(num3)

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

對于list對象可以看到下面的結果:

?
1
2
3
4
5
6
>>> list1 = [0,1]
>>> list2 = [0,1]
>>> id(list1)
>>> id(list2)
>>> list3 = list1
>>>id(list3)

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

python中的函數傳參是對象傳遞,同時也存在局部與全局的問題,在傳參過程中存在兩個規則:

通過引用將參數復制到局部作用域的對象中,意味著被用來訪問函數參數的變量于提高給函數的對象無關,因為存在一個復制問題,這和C語言是相同的。而且修改局部對象不會改變原始數據。

可以在適當位置修改可變對象。可變對象主要就是列表和字典,這個適當位置實質上就是前面分析的局部子對象的修改不會改變字典對象或者列表對象的ID

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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)

結果如下:

?
1
2
3
4
5
python test.py
4299181904
10
4336979912
[0, 2, 1]

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

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

所以在傳參過程中要注意下。

以上這篇老生常談python函數參數的區別(必看篇)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 波多洁野衣一二区三区 | 国产精品久久久久久久久 | 色屁屁www | 欧美在线一级视频 | 日日摸日日碰夜夜爽97纠 | 东北疯狂xxxxbbbb中国 | 亚洲 欧美 国产 视频二区 | 穆挂英风流艳史小说 | 麻豆天美精东果冻传媒在线 | 免费高清在线 | 欧美日韩亚洲综合久久久 | 日韩在线观看一区二区不卡视频 | 91制片厂制作传媒破解版免费 | 国产色网 | 久久精品久久久久 | 国产成人精品高清在线 | 天堂樱桃bt在线www | 欧美在线视频一区 | 久久久久免费视频 | 阿 好深 快点 老师受不了 | 国产主播福利在线观看 | 任我鲁精品视频精品 | 精品一久久香蕉国产线看播放 | 网站视频免费 | 亚洲精品高清中文字幕完整版 | 国产午夜小视频 | 99最新网址 | 嫩草成人影院 | 午夜精品免费 | 91极品女神久色在线播放 | 国产成人在线免费观看 | 色碰视频| 日韩欧美一区二区三区视频 | 亚洲色大成网站www久久九九 | 掰开逼操 | 青青草国产青春综合久久 | 欧美xingai| 激情小视频网站 | 国产精品久线观看视频 | 亚洲 综合 欧美在线 热 | 国产一级片在线 |