python變數傳遞
數值**
num_1 = 123
num_2 = num_1
# 改變num_2值前
print 'num_1 = , num_2 = '.format(num_1, num_2)
num_2 = 0
# 改變num_2值後
print 'num_1 = , num_2 = '.format(num_1, num_2)
輸出num_1 = 123, num_2 = 123
num_1 = 123, num_2 = 0
結論數值變數之間的是按值傳遞。
字串**
str_1 = 'hello python'
str_2 = str_1
# 改變str_2值前
print 'str_1 = , str_2 = '.format(str_1, str_2)
str_2 = 'hello'
# 改變str_2值後
print 'str_1 = , str_2 = '.format(str_1, str_2)
輸出str_1 = hello python, str_2 = hello python
str_1 = hello python, str_2 = hello
結論字串變數之間也是按值傳遞。
鍊錶**
l_1 = [1, 2, 3, 4]
l_2 = l_1
print 'l_1 = , l_2 = '.format(l_1, l_2)
l_2[0] = 100 # 改變l_2的第乙個元素
print 'l_1 = , l_2 = '.format(l_1, l_2)
l_2 = [1,1,1] # 改變l_2的全部元素
print 'l_1 = , l_2 = '.format(l_1, l_2)
輸出l_1 = [1, 2, 3, 4], l_2 = [1, 2, 3, 4]
l_1 = [100, 2, 3, 4], l_2 = [100, 2, 3, 4]
l_1 = [100, 2, 3, 4], l_2 = [1, 1, 1]
結論從上面的輸出結果可以看到,l_1和l_2的作用類似於c/c++中的指標,l_2 = l_1的作用相當於l_2和l_1指向了同一塊記憶體,內容都為[1, 2, 3, 4]。當l_2[0] = 100時,l_1中的第乙個元素也被改變了。l_2 = [1,1,1]使得l_2指向了另外一塊記憶體,也就不會對l_1的內容造成影響。
字典**
d_1 =
d_2 = d_1
print 'd_1 = , d_2 = '.format(d_1, d_2)
d_2['c'] = 10
print 'd_1 = , d_2 = '.format(d_1, d_2)
d_2 =
print 'd_1 = , d_2 = '.format(d_1, d_2)
輸出d_1 = , d_2 =
d_1 = , d_2 =
d_1 = , d_2 =
結論輸出結果顯示dict和list的性質一樣,直接賦值時是類似於c++中的按引用傳遞。
物件**
class point:
def __init__(self, x, y):
self.x = x
self.y = y
def __str__(self):
return ''.join(['x = ', str(self.x), ' ', 'y = ', str(self.y)])
p_1 = point(12,34)
p_2 = p_1
print 'p_1: ; p_2: '.format(p_1, p_2)
p_2.x = 122
print 'p_1: ; p_2: '.format(p_1, p_2)
p_2 = point(89, 978)
print 'p_1: ; p_2: '.format(p_1, p_2)
輸出p_1: x = 12 y = 34; p_2: x = 12 y = 34
p_1: x = 122 y = 34; p_2: x = 122 y = 34
p_1: x = 122 y = 34; p_2: x = 89 y = 978
結論自定義物件在賦值過程中也是按引用傳遞。
總結python中數值,字串在賦值過程中是按值傳遞;list、dict、物件在賦值過程中預設按引用傳遞,如果需要按值傳遞,則可以使用到copy模組下的copy和deepcopy函式。
python傳遞變數 python變數傳遞
python變數傳遞 數值 num 1 123 num 2 num 1 改變num 2值前 print num 1 num 2 format num 1,num 2 num 2 0 改變num 2值後 print num 1 num 2 format num 1,num 2 輸出num 1 123,...
python變數傳遞 Python引數傳遞
在 python 中,型別屬於物件,變數是沒有型別的 a 1,2,3 a runoob 以上 中,1,2,3 是 list 型別,runoob 是 string 型別,而變數 a 是沒有型別,她僅僅是乙個物件的引用 乙個指標 可以是指向 list 型別物件,也可以是指向 string 型別物件。可更...
python中var是什麼變數 Python 變數
1.python的變數是什麼 變數是用來儲存電腦程式中的資訊,唯一的目的是將資料儲存在記憶體中。2.python變數的組成 變數由字母 數字 下劃線組成 變數的第一位不能是數字,可以是字母或下劃線 python中的關鍵字不能作為變數。python中的關鍵字 and as assert break c...