Почему добавление запятой после имени переменной делает ее кортежем?

Я хочу знать, почему добавление запятой после имени переменной (в данном случае строки) делает егоtuple, то есть

>>> abc = 'mystring',
>>> print(abc)
('mystring',)

Когда я печатаюabc это возвращаетtuple ('mystring',).

 msarafzadeh11 февр. 2019 г., 22:55
Это отличный вопрос, обучающий основополагающей идее в Python.
смотрите также:stackoverflow.com/questions/7992559/...

Ответы на вопрос(6)

элементом. Для литералов списка необходимые квадратные скобки делают синтаксис уникальным, но, поскольку паразиты могут также обозначать группировку, заключение выражения в скобки не превращает его в кортеж: вам нужен другой синтаксический элемент, в данном случае запятая.

Решение Вопроса

Кортеж состоит из нескольких значений, разделенных запятыми

Круглые скобки используются для устранения неоднозначности в других местах, где используются запятые, например, позволяя вам вложить или ввести кортеж как часть списка аргументов.

УвидетьРаздел Python Tutorial по кортежам и последовательностям

abc' кортежу длиной 1.

Вы можете сделать несколько назначений с этим похожим синтаксисом:

x,y = 20,50

Также обратите внимание, что оператор print имеет особое понимание для завершения оператора print запятой; Это говорит print, чтобы пропустить завершающий перевод строки.

print 'hello',
print 'world'

результат:

hello world

это значение интерпретируется как тип данных «кортеж».

Вот кое-что, чему я научился на собственном опыте и которое может относиться к некоторым из вас:

Если вы музыкант, слово tuple может вводить в заблуждение, поскольку слова tuple и triple используются для описания групп заметок, которые используются в определенном типе временной подписи, с которой они не совместимы строго. Например, группа из двух восьмых нот воспроизводится так, как если бы подпись времени была 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)

ИНТ

Распаковка одноэлементного кортежа:
a, = (12, )

print type(a)

ИНТ

Иначе:
a = (12,)

print type(a)

кортеж

Обновить

Смотрите выше длягораздо лучший ответ.

Оригинальный ответ

В питоне кортеж указан в скобках.

Кортежи не указаны в скобках. Любое выражение может быть заключено в круглые скобки, это не является чем-то особенным для кортежей. Просто так бывает, что почти всегда необходимо использовать круглые скобки, потому что в противном случае это было бы неоднозначно, поэтому__str__ а также__repr__ методы на кортеже покажут их.

Я исправлен (все, что я делал сегодня. Вздох).

Например:

abc = ('my', 'string')

Как насчет одноэлементных кортежей? Обозначение в скобках по-прежнему сохраняется.

abc = ('mystring',)

Для всех кортежей скобка может быть пропущена, но запятая должна быть оставлена.

abc = 'mystring', # ('mystring',)

Или же

abc = 'my', 'string', # ('my', 'string',)

Так в действительности, чтовы делали, чтобы создатьодноэлементный кортеж в отличие от строки.

документация ясно говорит:

Список выражений, содержащий хотя бы одну запятую, дает кортеж. Длина кортежа - это количество выражений в списке. Выражения оцениваются слева направо.

 Ben James20 сент. 2010 г., 13:11
Кортежи не указаны в скобках. Любое выражение может быть заключено в круглые скобки, это не является чем-то особенным для кортежей. Просто так бывает, что почти всегда необходимо использовать круглые скобки, потому что в противном случае это было бы неоднозначно, поэтому__str__ а также__repr__ методы на кортеже покажут их.
 SilentGhost20 сент. 2010 г., 12:52
круглые скобки могут быть опущены независимо от того, сколько элементов имеет кортеж
 Manoj Govindan20 сент. 2010 г., 12:55
@SilentGhost: я поймал себя и исправил это. Дай мне минутку, прежде чем бросить камни, ладно? :)

Ваш ответ на вопрос