Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 5, 2018 14:51:19

Bubalgum
Зарегистрирован: 2017-09-06
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

name 'subbasic' is not defined

Здравствуйте.
Не понимаю почему не могу обратиться к переменной ведь она создается и в локальных переменных видна?
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”.

Офлайн

#2 Дек. 5, 2018 17:17:54

SafinTR
Зарегистрирован: 2018-12-05
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

name 'subbasic' is not defined


Не совсем ясно, что у вас внутри k и v.
Попробуйте, поставить кавычки:

 exec('{}="{}"'.format(k, v)); exec('%s="%s"' % (k, v))

Офлайн

#3 Дек. 6, 2018 06:24:59

Bubalgum
Зарегистрирован: 2017-09-06
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

name 'subbasic' is not defined

Попробовал кавычки поставить, вместо 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”.

Офлайн

#4 Дек. 6, 2018 09:13:42

SafinTR
Зарегистрирован: 2018-12-05
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

name 'subbasic' is not defined

а на какой строке ошибка?

  >>> exec('subbasic=' + str({}))
 >>> subbasic
 {}
 >>> subbasic[1]=0; subbasic['s']='h'
 >>> for i in subbasic:
 ...     print(i)
 ... 
 1
 s
 >>> 

Офлайн

#5 Дек. 6, 2018 10:16:29

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

name 'subbasic' is not defined

Bubalgum
В дебагере собственно так и выглядит, но при обращении к переменной “subbasic” выдается ошибка “name ‘subbasic’ is not defined”.
да вобщем все должно работать, проверте везда правильность написания переменной, может где кирилица затесалась?
 'subbasic' == 'subbasiс' # во второй строке  буква "с"- русская 
>>> 
False
>>> 



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Дек. 6, 2018 10:46:35)

Офлайн

#6 Дек. 6, 2018 11:00:21

Bubalgum
Зарегистрирован: 2017-09-06
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

name 'subbasic' is not defined

Проверил в интерпретаторе python код работает. А вот проекте django, не хочет.
Но получилось обратиться к переменной следующим образом: "

 locals()['subbasic']
Не знаю что это, специфика django, виртуального окружения, но на прямую обращение к переменной созданной через exec выдавало ошибку, а через конструкцию приведенную выше работает.
Спасибо все кто ответил!

Отредактировано Bubalgum (Дек. 6, 2018 11:02:37)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version