先來看python中普通變數傳值
data1=1
data2=data1
data2+=1
print data2,data1
2 1
對於普通變數python和c是一樣的,接下來看看python的列表
data1=[1,2,3,4]
data2=data1
data2+=[5]
print data1
[1, 2, 3, 4, 5]
print data2
[1, 2, 3, 4, 5]
data1=[1,2,3,4]
data2=data1
print data1
[1, 2, 3, 4, 5]
print data2
[1, 2, 3, 4, 5]
data1=[1,2,3,4]
data2=data1
data2=data2+[5]
print data1
[1, 2, 3, 4]
print data2
[1, 2, 3, 4, 5]
由此可以看到python list傳值時,傳遞的是指標。但是從上面**可以看到data2=data2+[5]跟前面執行結果不一樣,這是因為data2=data2+[5]在python中應該是分兩步運算的,先把右值傳遞給棧內的乙個變數,然後再把這個變數傳給data2,所以運算後data1跟data2的指標不在一起。
由於python中的元組相當與c中的常量陣列,不分析元組,接下來看看python中的字典變數
data1={}
data1["ont"]="st1"
data2=data1
data1[2]="st2"
print data1
print data2
字典中傳遞的也是位址,接下來看看一種特殊的字典,即字典中對應的值是個list
from collections import defaultdict
data1=defaultdict(list)
b=data1["one"]
print data1
defaultdict(, )
print b
['1', '2']
C 與Python的區別(三)
區別8 c 異常處理基於3個關鍵字 try,catch,throw。而python中異常處理基於try,except,else,pass關鍵字。python處理異常的 更簡潔,而且易讀性較強。c 中異常處理如下例 int main catch double i cout z return0 pyth...
C 與C的區別
l c如果不寫返回值,預設是int,而c 中不能不寫返回值 可用void表示無返回值 如func1 l int func1 在c中表示可帶任意引數的函式,這是c的漏洞,使得它避開了引數型別檢查 而c 中表示不帶引數的函式。2 標頭檔案的區別 l c 的標頭檔案去掉了c中的.h,以c字首開始。比如,變...
C與C 的區別
1.void型指標 int x malloc sizeof int 10 在c裡面是合法的,但是在c 中編譯不通過。從bjarne stroustrup給出的解釋是這種型別是不安全的。就是說你可以使用乙個void型的指標指向任何位址,如果你分配了乙個位址給這個void指標指向另乙個與它型別不同的指標...