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函式。
shell與python間傳遞變數方法
python shell 1.環境變數 python view plain copy import os var 123 或var 123 os.environ var str var environ的鍵值必須是字串 os.system echo var 2.字串連線 python view pla...
Air傳遞變數值
不用多說,附上 twmodule main xmlns s library xmlns mx library xmlns local import mx.controls.alert bindable public var string string protected function butto...
Python函式作用域及傳遞變數筆記
x 55def func x 99print x print 全域性變數x x print 函式內變數x func 輸出 全域性變數x 55函式內變數x 99區域性作用域local不能修改全域性作用域global的變數 x 55def func global x x 99print x print ...