#python #python-3.x
#python #python-3.x
Вопрос:
У меня есть список переменных, которые я уже определил в своей программе (я получил его с помощью команды dir ()). Список содержит строки, которые являются именами этих переменных.
Я хочу найти тип каждого из них. type()
Команда возвращает "str"
. Что это такое (буквально говоря), но я хочу, каков тип переменной на самом деле, прежде чем преобразовывать ее имя в строку.
Комментарии:
1. Из любопытства, что вы используете, кроме целей отладки, для получения типа каждой переменной в области видимости?
Ответ №1:
Вы можете сделать это:
>>> b = 3
>>> for var in dir():
print(var, type(vars()[var]))
__annotations__ <class 'dict'>
__builtins__ <class 'module'>
__doc__ <class 'NoneType'>
__loader__ <class 'type'>
__name__ <class 'str'>
__package__ <class 'NoneType'>
__spec__ <class 'NoneType'>
b <class 'int'>
var <class 'str'>
Ответ №2:
Если эти переменные являются локальными, вы можете использовать locals()['name']
or vars()['name']
для доступа к ним (см. раздел «Еще несколько объяснений» об их различии)
Для глобальных переменных используйте globals()['name']
a = 'some string'
b = 123
c = 1.234
d = [1, 2, 3, 4]
print(type(locals()['a']))
print(type(locals()['b']))
print(type(locals()['c']))
print(type(locals()['d']))
Вывод
<class 'str'>
<class 'int'>
<class 'float'>
<class 'list'>
Еще несколько пояснений:
globals()
всегда возвращает словарь пространства имен модуляlocals()
всегда возвращает словарь текущего пространства именvars()
возвращает либо словарь текущего пространства имен (если вызывается без аргумента), либо словарь аргумента.