2013-12-22 112 views
0

我有蟒蛇以下代碼:Python中的語法是什麼意思?

a = "xxx" # a is a string 
b = "yyy" # b is another string 
for s in a, b: 
    t = s[:] 
    ... 

我不明白的線路的含義。我知道a,b返回一個元組。但是通過a,b循環呢?爲什麼你需要t = s [:]。我知道s [:]創建一個列表的副本。但是,如果s是一個字符串,爲什麼不寫t = s來將字符串s的副本寫入t?

謝謝。

+1

這是由你認爲知道他們的東西的人寫的?這個片斷是毫無意義的,但目前還不清楚這是因爲編寫代碼的人提出了一些毫無意義的東西,或者因爲您簡化了代碼並錯過了相關的東西。 – user2357112

+0

雅我沒有看到任何點或使用案例的片段。 –

+0

如果你正在編寫泛型代碼,寫't = s [:]'可能是有意義的,而你所知道的是's'是一個序列。然後,如果你想要一個與原來相同類型的副本,你可以寫'[:]'。但是對於特定的字符串,不需要複製。 –

回答

7

for循環的含義是遍歷元組(a, b)。所以循環體將運行兩次,一次使用s等於a,再次等於b

t = s[:] 

在它的面前,這造成字符串s的副本,使t到新的字符串的引用。

但是,字符串是不可變的,因此對於大多數用途來說,原始字體與副本一樣好。作爲優化,Python實現允許重新使用原始字符串。所以該行很可能相當於:

t = s 

也就是說,它不會複製。它只會使t指的是同一個對象s所指的。