2013-12-22 3 views
0

У меня есть следующий код в Python:Что это за синтаксис в 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 ссылается.

Смежные вопросы