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