Подтвердить что ты не робот

Как узнать, является ли переменная кортежем, строкой или целым числом?

Я пытаюсь выяснить несоответствие типа при добавлении строки в другую строку в операции конкатенации.

В основном, возвращаемая ошибка - это ошибка типа (не может конкатенация строки и кортежа); поэтому я хотел бы выяснить, где я назначил значение как кортеж, а не строку.

Все значения, которые я назначаю, являются строками, поэтому я должен выяснить, откуда берется кортеж, поэтому я надеялся, что в python есть способ узнать, что содержится внутри переменной, и какой тип это.

До сих пор с помощью pdb мне удалось проверить содержимое переменных, и я правильно понял значения, которые я ожидал бы; но я хотел бы также знать тип переменной (по логике, если компилятор способен поднять ошибку типа, это означает, что каким-то образом можно узнать, что внутри переменной, и если оно совместимо с выполняемой операцией.... поэтому должен быть способ получить это значение/флаг).

Есть ли способ распечатать тип переменной в python?

Btw Я попытался изменить все мои переменные, чтобы быть явно строками, но не представляется возможным заставить str (myvar), поэтому я не могу просто использовать типы строк везде, где я использую строки.

Спасибо!

4b9b3361

Ответ 1

Вы просто используете:

type(varname)

который будет выводить int, str, float и т.д.

Ответ 2

isinstance(obj, tuple)
isinstance(obj, basestring)
isinstance(obj, int)

Ответ 3

использовать isinstance?

if isinstance(var, int):

if isinstance(var, str):

if isinstance(var, tuple):

Ответ 4

Вероятно, вы хотите протестировать (предполагая Python 2.x) с помощью isinstance(obj, basestring). У вас есть варианты использования isinstance, type и вызова атрибута __class__, но isinstance скорее всего будет тем, который вы хотите здесь. Взгляните на в этой статье для более тщательного изучения различий между тремя вариантами.

Ответ 5

repr (object) даст текстовое описание объекта, которое должно показывать тип и значение. Вы можете распечатать или просмотреть это в отладчике.

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

__repr__

переопределяется.

Ответ 6

Обратите внимание, что если вы хотите проверить свой тип var в инструкции if, конструкцию if type(varname) == "tuple": не будет работать. Но это будет:

if type(varname) is tuple:
if type(varname) is list:
if type(varname) is dict:
if type(varname) is int:
if type(varname) is str: