Ошибки типа данных - PullRequest
       11

Ошибки типа данных

0 голосов
/ 11 октября 2018

Я обнаружил странную вещь о типе данных целых чисел с запятой в конце выражения (см. Код ниже).

Код

a = -1,  # strange legal syntax

print('"a" has {} data type'.format(type(a)))

if type(a) == tuple:

    print(len(a))

else:

    print('It is not a tuple!')

print('If we print "-1," directly, without variable, then ... {}'.format(type(-1,)))

Вопросы:

ИспользованиеБлокнот Jupyter и консоль Spyder Я нахожу разные результаты.Что происходит с этим?Какой тип данных имеет переменная "a": int или tuple?

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

a (определяется как a = 1, - это tuple, точка - это запятая, определяющая буквальный кортеж, а не парены (за исключением, конечно, пустого кортежа). Но выражение type(-1,) приводит к int, потому что запятая анализируется как часть правила синтаксиса вызова функции, которое имеет приоритет над правилом синтаксиса литерального кортежа.Добавление скобок вокруг аргумента type() - то есть type((-1,)) заставит синтаксический анализатор сначала оценить то, что находится внутривнутренние паренсы - следовательно, вместо этого создается кортеж.

0 голосов
/ 11 октября 2018

Этот

a = -1,

равен этому

a = (-1,)

Это кортеж.

...