Найти - Пользователи
Полная версия: name 'subbasic' is not defined
Начало » Python для новичков » name 'subbasic' is not defined
1
Bubalgum
Здравствуйте.
Не понимаю почему не могу обратиться к переменной ведь она создается и в локальных переменных видна?
for k,v in d.items():
exec('%s=%s' % (k,v))
if “subbasic” in locals():
for x in subbasic:
x
После выполнения функции exec появляется queryset c именем subbasic. Собственно проверка if находит ее
в локальных переменных, да и в дебагере видно. Но при обращении выдается ошибка “name ‘subbasic’ is not defined”.
SafinTR

Не совсем ясно, что у вас внутри k и v.
Попробуйте, поставить кавычки:
 exec('{}="{}"'.format(k, v)); exec('%s="%s"' % (k, v))
Bubalgum
Попробовал кавычки поставить, вместо queryset там становится строка, но проблему это не решает т.к. ошибка в инициализации переменной.
Внутри переменных:
к ='subbasic'
v='SubBasic.objects.filter(id = 6)'
Вообще идея была задать не жестко прошитые в коде переменные, а заполняемые в зависимости от модели.
Например
subbasic='SubBasic.objects.filter(id = 6)'
сloudmsg='CloudMsg.objects.filter(id = 7)'
В дебагере собственно так и выглядит, но при обращении к переменной “subbasic” выдается ошибка “name ‘subbasic’ is not defined”.
SafinTR
а на какой строке ошибка?
  >>> exec('subbasic=' + str({}))
 >>> subbasic
 {}
 >>> subbasic[1]=0; subbasic['s']='h'
 >>> for i in subbasic:
 ...     print(i)
 ... 
 1
 s
 >>> 
PEHDOM
Bubalgum
В дебагере собственно так и выглядит, но при обращении к переменной “subbasic” выдается ошибка “name ‘subbasic’ is not defined”.
да вобщем все должно работать, проверте везда правильность написания переменной, может где кирилица затесалась?
 'subbasic' == 'subbasiс' # во второй строке  буква "с"- русская 
>>> 
False
>>> 
Bubalgum
Проверил в интерпретаторе python код работает. А вот проекте django, не хочет.
Но получилось обратиться к переменной следующим образом: "
 locals()['subbasic']
Не знаю что это, специфика django, виртуального окружения, но на прямую обращение к переменной созданной через exec выдавало ошибку, а через конструкцию приведенную выше работает.
Спасибо все кто ответил!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB