Ответ 1
Вы просто используете:
type(varname)
который будет выводить int, str, float и т.д.
Я пытаюсь выяснить несоответствие типа при добавлении строки в другую строку в операции конкатенации.
В основном, возвращаемая ошибка - это ошибка типа (не может конкатенация строки и кортежа); поэтому я хотел бы выяснить, где я назначил значение как кортеж, а не строку.
Все значения, которые я назначаю, являются строками, поэтому я должен выяснить, откуда берется кортеж, поэтому я надеялся, что в python есть способ узнать, что содержится внутри переменной, и какой тип это.
До сих пор с помощью pdb мне удалось проверить содержимое переменных, и я правильно понял значения, которые я ожидал бы; но я хотел бы также знать тип переменной (по логике, если компилятор способен поднять ошибку типа, это означает, что каким-то образом можно узнать, что внутри переменной, и если оно совместимо с выполняемой операцией.... поэтому должен быть способ получить это значение/флаг).
Есть ли способ распечатать тип переменной в python?
Btw Я попытался изменить все мои переменные, чтобы быть явно строками, но не представляется возможным заставить str (myvar), поэтому я не могу просто использовать типы строк везде, где я использую строки.
Спасибо!
Вы просто используете:
type(varname)
который будет выводить int, str, float и т.д.
isinstance(obj, tuple)
isinstance(obj, basestring)
isinstance(obj, int)
использовать isinstance?
if isinstance(var, int):
if isinstance(var, str):
if isinstance(var, tuple):
Вероятно, вы хотите протестировать (предполагая Python 2.x) с помощью isinstance(obj, basestring)
. У вас есть варианты использования isinstance
, type
и вызова атрибута __class__
, но isinstance
скорее всего будет тем, который вы хотите здесь. Взгляните на в этой статье для более тщательного изучения различий между тремя вариантами.
repr (object) даст текстовое описание объекта, которое должно показывать тип и значение. Вы можете распечатать или просмотреть это в отладчике.
Для простых значений repr обычно возвращает ту же строку, что и буквально записывает значение в код. Для пользовательских классов он дает имя класса и идентификатор объекта или что-то еще, если класс
__repr__
переопределяется.
Обратите внимание, что если вы хотите проверить свой тип 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: