但tuple所謂的"不可變動(immutable)",是指不得更改在tuple中每個索引所參考的物件,而不是指不可以更變所參考物件的值。
Tuple的內容不可變動,指的是不能變動每個索引所參考的物件,而不是指物件本身不能變動(這裡指可以更變所參考物件的值)。例如:
>>> t = ([1, 2], [3, 4]) >>> t([1, 2], [3, 4]) >>> t[0] = [10, 20] Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment >>> t[0][0] = 10 >>> t[0][1] = 20 >>> t([10, 20], [3, 4]) >>> |
上例中,打算指定Tuple索引0為新的串列物件是不可行的,但t[0][0]指的是改變索引0處的串列索引0的元素,同樣的t[0][1]指的是改變索引0處的串列索引1的元素,也就是相當於:
>>> t = ([1, 2], [3, 4]) >>> l = t[0] >>> l[0] = 10 >>> l[1] = 20 >>> t([10, 20], [3, 4]) >>> |
>>> t = (1,2,3,4,5)
>>> t[0]
1
>>> t[1]
2
>>> t[2]
3
>>> t[3]
4
>>> t[4]
5
>>> t[-1]
5
>>> t[-2]
4
>>> t[-3]
3
>>> t[-4]
2
>>> t[-5]
1
>>> (1,2,3,4)[0]
1
>>> (1,2,3,4)[1]
2
所以說像以下這種程式碼,當recursive=0時,就會變成 'scp -t %s' ; 若recursive=1時,則為'scp -r -t %s'
scp_command = ('scp -t %s', 'scp -r -t %s')[recursive]
沒有留言:
張貼留言