Форум сайта python.su
i.slepovДорогой друг, по сути тернарный оператор - сахар, list comprehension - сахар, лямбды - сахар … я так долго еще могу перечислять. И что, не нужен нам сахар, будем сурово кодить с минимальным синтаксисом?
При этом прямо в документе указано как это сейчас работает. По сути это банальный сахар.
i.slepovХреново это сейчас работает.
При этом прямо в документе указано как это сейчас работает.
i.slepovВау какое открытие! Расскажите нам откуда операторы +=, -=, or, not да и вообще все, ни одного оператора в питоне своего нет. На помойку питон!!!
Вы Perl видели? Этот оператор оттуда
i.slepovникуда она не упадет
программа честно упадет с выводом Traceback
i = some_function_call() if i: some_another_function_call(i) else: some_another_function2_call()
Офлайн
Всё закончится расстановкой вопросов где ни попадя, наугад и всё равно всё будет работать как попало. Имхо, лучше во всех местах где возможен None проверять это явно.
Отредактировано Shaman (Сен. 29, 2015 18:01:47)
Офлайн
Если посмотреть на Wiki страницу , то увидим что потихоньку его начинают внедрять разные ЯП. Наверное они также хотят подчерпнуть лучшие наработки.
Ну и еще, представьте что в недалеком будущем подобный оператор будет введен повсеместно, и будет восприниматься как стандарт де-факто. Тогда как мы будем говорить- везде есть,а в Питоне нет…срамота.
Я не являюсь знатоком истории ЯП, но что то мне подсказывает что подобные инциденты в прошлом случались.
Офлайн
JOHN_16В списке три языка у которых даже полноценного эквивалента Null нет и один без наличия Null coalescing operator, а просто с проверкой на Null.
посмотреть на Wiki страницу
Офлайн
Вместо тысячи слов. Только что написал это
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)
Офлайн
FishHook
еще 1 повод перейти на python3
Офлайн
sander
Не понял, честно говоря, при чем тут python3
Офлайн
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)
Офлайн
FishHook
никуда она не упадет
>>> title = None >>> title.upper()
FishHook
Вау какое открытие! Расскажите нам откуда операторы +=, -=, or, not да и вообще все, ни одного оператора в питоне своего нет. На помойку питон!!!
$=`;$_=\%!;($_)=/(.)/;$==++$|;($.,$/,$,,$\,$",$;,$^,$#,$~,$*,$:,@%)=( $!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/,$"),$=++;$.++;$.++; $_++;$_++;($_,$\,$,)=($~.$"."$;$/$%[$?]$_$\$,$:$%[$?]",$"&$~,$#,);$,++ ;$,++;$^|=$";`$_$\$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$\$"$^$~$*.>&$=`
Офлайн
А должно идти просто к (.)(.)
Офлайн