Это запятые, а не круглые скобки, которые являются значительными. В учебнике Python сказано:
Кортеж состоит из нескольких значений, разделенных запятыми
blockquote>Круглые скобки используются для значений в других местах, где используются запятые, например, позволяя вам вставлять или вводить кортеж как часть списка аргументов.
См. раздел Python Tutorial раздел «Кортежи и последовательности»
Обновить
См. выше для гораздо лучшего ответа .
Оригинальный ответ
В питоне кортеж обозначается скобкой ,
Скобки не указаны скобками. Любое выражение может быть заключено в круглые скобки, это ничего особенного для кортежей. Просто бывает, что почти всегда необходимо использовать круглые скобки, потому что в противном случае это было бы двусмысленно, поэтому методы
blockquote>__str__
и__repr__
на кортеже покажут их.Я стою исправлен (все, что я делал сегодня. Вздох).
Например:
abc = ('my', 'string')
А как насчет одиночных кортежей?
abc = ('mystring',)
Для всех кортежей скобка может быть опущена, но запятая должна быть оставлена.
abc = 'mystring', # ('mystring',)
Или
abc = 'my', 'string', # ('my', 'string',)
Таким образом, вы фактически создали один элемент tuple в отличие от строки.
Список выражений, содержащий хотя бы одну запятую, дает кортеж. Длина кортежа - это количество выражений в списке. Выражения оцениваются слева направо.
blockquote>
Когда вы видите запятую после одного значения, это значение интерпретируется как тип данных «tuple».
Вот что я узнал из опыта, который может быть применим к некоторым из вас:
Если вы музыкант, слово кортеж может быть запутанным, поскольку слова кортеж и тройка используются для описания группировок заметок, которые используются в определенном типе сигнатуры времени, что они не являются строго совместимыми. Например, группировка двух восьмых нот воспроизводилась так, как если бы сигнатура времени составляла 4/4 (прямое чувство), когда сигнатура времени 6/8 (ощущение триплета). Или наоборот, триплет играл в 4/4 раза. Это приводит к тому, что программист-новичок может интерпретировать кортеж как пару значений.
Это не тот же кортеж, что и в программировании. Эти кортежи представляют собой неизменяемый (не изменяемый однажды назначенный) тип данных последовательности, который может содержать любое количество значений, но может считаться перенесенным вместе, как если бы все они были заключены между круглыми скобками или, другими словами, кортежем круглых скобок.
Вы не можете добавлять или удалять материал из кортежа после его назначения, поэтому он обычно используется для упаковки и распаковки переменных. Я часто использую его для возврата нескольких значений из функции:
def somefunction_foo(some_data_file):
map1 = dict()
map2 = dict()
map3 = dict()
with open(datafile, 'r') as file: # auto-close the file after this block
for row in file:
pass
# don't actually pass, but
# fill each map with specific data from the same file
return map1, map2, map3 # I'm returning a tuple, but without parenthesis
Поскольку это единственный способ написать литерал кортежа с одним элементом. Для литералов списка необходимые скобки делают синтаксис уникальным, но поскольку скобки могут также обозначать группировку, включение выражения в круглые скобки не превращает его в кортеж: вам нужен другой синтаксический элемент, в этом случае запятая.
a, b = (12, 14)
print type(a)
Выход:
int
blockquote>Распаковка одноэлементного кортежа:
a, = (12, ) print type(a)
Выход:
int
blockquote>В противном случае:
a = (12,) print type(a)
Выход:
tuple
blockquote>
В примере вопроса вы назначили переменную 'abc' в Tuple с длиной 1.
Вы можете выполнять несколько назначений с помощью этого синтаксиса:
x,y = 20,50
Также обратите внимание, что в заявлении печати есть особое понимание для завершения инструкции печати запятой; Это говорит print, чтобы опустить конечную новую строку.
print 'hello',
print 'world'
результат:
hello world