Почему выводится на печать ('mystring',), а не только mystring?
Переведено автоматически
Ответ 1
Важны запятые, а не круглые скобки. В руководстве по Python говорится:
Кортеж состоит из ряда значений, разделенных запятыми
Круглые скобки используются для устранения неоднозначности в других местах, где используются запятые, например, позволяя вложить или ввести кортеж как часть списка аргументов.
Потому что это единственный способ записать литерал кортежа с одним элементом. Для литералов списка необходимые скобки делают синтаксис уникальным, но поскольку парантезы также могут обозначать группировку, заключение выражения в круглые скобки не превращает его в кортеж: вам нужен другой синтаксический элемент, в данном случае запятая.
Кортежи не обозначаются круглыми скобками. Любое выражение может быть заключено в круглые скобки, в этом нет ничего особенного для кортежей. Просто так получилось, что почти всегда необходимо использовать круглые скобки, потому что в противном случае это было бы неоднозначно, вот почему методы __str__ и __repr__ в кортеже будут показывать их.
Например:
abc = ('my', 'string') abc = 'my', 'string'
Как насчет одноэлементных кортежей?
abc = ('mystring',) abc = 'mystring',
Таким образом, фактически то, что вы делали, заключалось в создании одноэлементного кортежа в отличие от строки.
Список выражений, содержащий хотя бы одну запятую, дает кортеж. Длина кортежа равна количеству выражений в списке. Выражения вычисляются слева направо.