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