Найти - Пользователи
Полная версия: PEP 0505 -- None coalescing operators
Начало » Обсуждение новостей » PEP 0505 -- None coalescing operators
1 2 3 4 5
FishHook
i.slepov
При этом прямо в документе указано как это сейчас работает. По сути это банальный сахар.
Дорогой друг, по сути тернарный оператор - сахар, list comprehension - сахар, лямбды - сахар … я так долго еще могу перечислять. И что, не нужен нам сахар, будем сурово кодить с минимальным синтаксисом?
i.slepov
При этом прямо в документе указано как это сейчас работает.
Хреново это сейчас работает.
i.slepov
Вы Perl видели? Этот оператор оттуда
Вау какое открытие! Расскажите нам откуда операторы +=, -=, or, not да и вообще все, ни одного оператора в питоне своего нет. На помойку питон!!!
i.slepov
программа честно упадет с выводом Traceback
никуда она не упадет
i = some_function_call()
if i:
   some_another_function_call(i)
else:
   some_another_function2_call()
ничего не падает, но программа может работать некорректно

Shaman
Всё закончится расстановкой вопросов где ни попадя, наугад и всё равно всё будет работать как попало. Имхо, лучше во всех местах где возможен None проверять это явно.
JOHN_16
Если посмотреть на Wiki страницу , то увидим что потихоньку его начинают внедрять разные ЯП. Наверное они также хотят подчерпнуть лучшие наработки.
Ну и еще, представьте что в недалеком будущем подобный оператор будет введен повсеместно, и будет восприниматься как стандарт де-факто. Тогда как мы будем говорить- везде есть,а в Питоне нет…срамота.
Я не являюсь знатоком истории ЯП, но что то мне подсказывает что подобные инциденты в прошлом случались.
Shaman
JOHN_16
посмотреть на Wiki страницу
В списке три языка у которых даже полноценного эквивалента Null нет и один без наличия Null coalescing operator, а просто с проверкой на Null.
FishHook
Вместо тысячи слов. Только что написал это
    def dashboard_updates(self, old, new):
        none_val = _(u"'Не задано'")
        old_values = model_to_dict(old)
        new_values = model_to_dict(new)
        changes = set(old_values.items()) - set(new_values.items())
        changes_str = u""
        for changed_field, old_value in changes:
            title = old.__class__._meta.get_field_by_name(changed_field)[0].verbose_name
            old_val = getattr(old, changed_field)
            new_val = getattr(new, changed_field)
            if old_val is None:
                old_val = none_val
            if new_val is None:
                new_val = none_val
            new_val = new_val.__unicode__() if hasattr(new_val, "__unicode__") else new_val
            old_val = old_val.__unicode__() if hasattr(old_val, "__unicode__") else old_val
            change = _(u"Изменен параметр '{title}'. Старое значение {old_val}. Новое значение {new_val}\n").format(
                title=title,
                old_val=old_val,
                new_val=new_val
            )
            changes_str += change
        self.dashboard(changes_str)
и горько горюю, что в питоне нет оператора ??
sander
FishHook
еще 1 повод перейти на python3
FishHook
sander
Не понял, честно говоря, при чем тут python3
PooH
FishHook
Вместо тысячи слов. Только что написал это
А вот так горе не утихает?
def dashboard_updates(self, old, new):
    
    def prepare_value(val):
        if val is None:
            val = _(u"'Не задано'")
        return val.__unicode__() if hasattr(val, "__unicode__") else val
 
    old_values = model_to_dict(old)
    new_values = model_to_dict(new)
    changes = set(old_values.items()) - set(new_values.items())
    changes_str = u""
    for changed_field, old_value in changes:
        title = old.__class__._meta.get_field_by_name(changed_field)[0].verbose_name
        change = _(u"Изменен параметр '{title}'. Старое значение {old_val}. Новое значение {new_val}\n").format(
            title=title,
            old_val=prepare_value(getattr(old, changed_field)),
            new_val=prepare_value(getattr(new, changed_field))
        )
        changes_str += change
    self.dashboard(changes_str)
i.slepov
FishHook
никуда она не упадет

Да ладно?

>>> title = None
>>> title.upper()

Реально не упадет? Смотрите что комментируете.


FishHook
Вау какое открытие! Расскажите нам откуда операторы +=, -=, or, not да и вообще все, ни одного оператора в питоне своего нет. На помойку питон!!!

Печально что все идет к этому:
$=`;$_=\%!;($_)=/(.)/;$==++$|;($.,$/,$,,$\,$",$;,$^,$#,$~,$*,$:,@%)=(
$!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/,$"),$=++;$.++;$.++;
$_++;$_++;($_,$\,$,)=($~.$"."$;$/$%[$?]$_$\$,$:$%[$?]",$"&$~,$#,);$,++
;$,++;$^|=$";`$_$\$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$\$"$^$~$*.>&$=`
ZZZ
А должно идти просто к (.)(.)
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