Найти - Пользователи
Полная версия: Можно ли записать присваивание переменной так?
Начало » Python для новичков » Можно ли записать присваивание переменной так?
1
Bandicoot
foo = request.POST["bar"] or ""

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

В таком случае использовать громоздкую запись? Есть ли вариант проще?
if request.POST["bar"]:
    foo = request.POST["bar"]
else:
    foo = ""
JOHN_16
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', '')
sergeek
да можно, это не оператор сравнения. В шеле ведь элементарно проверяется
FishHook
А разве
request.POST["bar"]
не вывалится с эксепшеном KeyError при отсутствии “bar” в POST?
Наверное так надо
foo=request.POST.get("bar") or ""
а лучше так
foo=request.POST.get("bar","")
JOHN_16
FishHook
а лучше так
это я уже предложил =) имхо лучше варианта нет
Bandicoot
Всем спасибо, вроде понял что к чему)
FishHook
JOHN_16
Сорри, не увидел, с телефона пишу
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