Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 29, 2015 17:39:48

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

PEP 0505 -- None coalescing operators

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()
ничего не падает, но программа может работать некорректно



Офлайн

#2 Сен. 29, 2015 17:55:47

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

PEP 0505 -- None coalescing operators

Всё закончится расстановкой вопросов где ни попадя, наугад и всё равно всё будет работать как попало. Имхо, лучше во всех местах где возможен None проверять это явно.

Отредактировано Shaman (Сен. 29, 2015 18:01:47)

Офлайн

#3 Сен. 29, 2015 23:48:45

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

PEP 0505 -- None coalescing operators

Если посмотреть на Wiki страницу , то увидим что потихоньку его начинают внедрять разные ЯП. Наверное они также хотят подчерпнуть лучшие наработки.
Ну и еще, представьте что в недалеком будущем подобный оператор будет введен повсеместно, и будет восприниматься как стандарт де-факто. Тогда как мы будем говорить- везде есть,а в Питоне нет…срамота.
Я не являюсь знатоком истории ЯП, но что то мне подсказывает что подобные инциденты в прошлом случались.



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

Офлайн

#4 Сен. 30, 2015 09:57:25

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

PEP 0505 -- None coalescing operators

JOHN_16
посмотреть на Wiki страницу
В списке три языка у которых даже полноценного эквивалента Null нет и один без наличия Null coalescing operator, а просто с проверкой на Null.

Офлайн

#5 Окт. 2, 2015 10:12:15

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

PEP 0505 -- None coalescing operators

Вместо тысячи слов. Только что написал это

    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)
и горько горюю, что в питоне нет оператора ??



Офлайн

#6 Окт. 2, 2015 10:43:11

sander
Зарегистрирован: 2015-02-19
Сообщения: 317
Репутация: +  53  -
Профиль   Отправить e-mail  

PEP 0505 -- None coalescing operators

FishHook
еще 1 повод перейти на python3

Офлайн

#7 Окт. 2, 2015 11:19:38

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

PEP 0505 -- None coalescing operators

sander
Не понял, честно говоря, при чем тут python3



Офлайн

#8 Окт. 2, 2015 12:51:14

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

PEP 0505 -- None coalescing operators

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)



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Отредактировано PooH (Окт. 2, 2015 12:52:10)

Офлайн

#9 Окт. 5, 2015 17:13:47

i.slepov
Зарегистрирован: 2015-05-28
Сообщения: 53
Репутация: +  5  -
Профиль   Отправить e-mail  

PEP 0505 -- None coalescing operators

FishHook
никуда она не упадет

Да ладно?

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

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


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

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

Офлайн

#10 Окт. 5, 2015 20:29:07

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

PEP 0505 -- None coalescing operators

А должно идти просто к (.)(.)



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version