Уведомления

Группа в Telegram: @pythonsu

#1 Май 21, 2013 14:51:01

Bandicoot
От:
Зарегистрирован: 2011-11-16
Сообщения: 47
Репутация: +  0  -
Профиль   Отправить e-mail  

Можно ли записать присваивание переменной так?

foo = request.POST["bar"] or ""

То есть если из формы не пришла инфа, присвоить пустую строку. Вопрос конечно до ужаса нубский, но я хочу знать наверняка, можно ли так делать? Интерпретатор не ругается

Отредактировано Bandicoot (Май 21, 2013 14:52:26)

Офлайн

#2 Май 21, 2013 15:28:43

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Можно ли записать присваивание переменной так?

Нет.
Значение будет преобразовано в boolean.



Офлайн

#3 Май 21, 2013 15:36:48

Bandicoot
От:
Зарегистрирован: 2011-11-16
Сообщения: 47
Репутация: +  0  -
Профиль   Отправить e-mail  

Можно ли записать присваивание переменной так?

Lexander
Нет.Значение будет преобразовано в boolean.

В таком случае использовать громоздкую запись? Есть ли вариант проще?
if request.POST["bar"]:
    foo = request.POST["bar"]
else:
    foo = ""

Офлайн

#4 Май 21, 2013 15:42:19

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Можно ли записать присваивание переменной так?

Bandicoot
по первому сообщению вот вам код на раздумие о поведении

>>> d={}
>>> d['a']='A'
>>> d['a'] or '!'
'A'
>>> d['b']=0
>>> d['b'] or '!'
'!'
собственно это то о чем говорил Lexander

второе:
foo=request.POST["bar"] if request.POST["bar"] else ""
#
foo=request.POST.get('bar', '')



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Май 21, 2013 15:44:17

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Можно ли записать присваивание переменной так?

да можно, это не оператор сравнения. В шеле ведь элементарно проверяется

Офлайн

#6 Май 21, 2013 18:58:23

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Можно ли записать присваивание переменной так?

А разве

request.POST["bar"]
не вывалится с эксепшеном KeyError при отсутствии “bar” в POST?
Наверное так надо
foo=request.POST.get("bar") or ""
а лучше так
foo=request.POST.get("bar","")



Отредактировано FishHook (Май 21, 2013 18:59:46)

Офлайн

#7 Май 22, 2013 02:15:07

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Можно ли записать присваивание переменной так?

FishHook
а лучше так
это я уже предложил =) имхо лучше варианта нет



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#8 Май 22, 2013 14:40:37

Bandicoot
От:
Зарегистрирован: 2011-11-16
Сообщения: 47
Репутация: +  0  -
Профиль   Отправить e-mail  

Можно ли записать присваивание переменной так?

Всем спасибо, вроде понял что к чему)

Офлайн

#9 Май 23, 2013 14:49:21

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Можно ли записать присваивание переменной так?

JOHN_16
Сорри, не увидел, с телефона пишу



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version