Форум сайта python.su
Сообществу представляется интересный PEP 0505, который предлагает ввести оператор ??
Офлайн
Годно!
Офлайн
ну вот это вот - безумие
>>> title = 'My Title' >>> title.upper() 'MY TITLE' >>> title = None >>> title.upper() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'NoneType' object has no attribute 'upper' >>> title?.upper() None
>>> person = {'name': 'Mark', 'age': 32} >>> person['name'] 'Mark' >>> person = None >>> person['name'] Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'NoneType' object is not subscriptable >>> person?['name'] None
Отредактировано sander (Сен. 22, 2015 09:26:59)
Офлайн
По моему лажа и нарушение дзен python.
>>> title = 'My Title' >>> title or 'Default title' 'My Title' >>> title = None >>> title or 'Default title' 'Default title'
Similar behavior can be achieved with the or operator, but or checks whether its left operand is false-y, not specifically None . This can lead to surprising behavior. Consider the scenario of computing the price of some products a customer has in his/her shopping cart:
>>> price = 100
>>> requested_quantity = 5
>>> default_quantity = 1
>>> (requested_quantity or default_quantity) * price
500
>>> requested_quantity = None
>>> (requested_quantity or default_quantity) * price
100
>>> requested_quantity = 0
>>> (requested_quantity or default_quantity) * price # oops!
100
Офлайн
Дзен питона перепишут…
Офлайн
i.slepov
вообще катят, ибо я не однократно попадался. Но соглашусь что пока что выглядит…ну не привычно
Офлайн
JOHN_16
вообще катят, ибо я не однократно попадался.
>>> title = 'My Title' >>> title.upper() 'MY TITLE' >>> title = None >>> title.upper() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'NoneType' object has no attribute 'upper' >>> title?.upper() None
Отредактировано i.slepov (Сен. 29, 2015 15:40:04)
Офлайн
i.slepovА еще пустой словарь, пустой список, пустое множество, пустой кортеж, объект в методами __bool__() и __len__(), в общем отличать None от bool(obj) реально необходимо.
“или” отличающий число 0 от None
i.slepovВот как раз таки трудно выявляемая логическая ошибка у вас произойдет, когда раз в полгода программа
со временем может случиться трудно выявляемая логическая ошибка
Офлайн
i.slepovВ каком месте она страдает?
а читабельность кода страдает
Офлайн
FishHook
А еще пустой словарь, пустой список, пустое множество, пустой кортеж, объект в методами __bool__() и __len__(), в общем отличать None от bool(obj) реально необходимо.
FishHook
Вот как раз таки трудно выявляемая логическая ошибка у вас произойдет, когда раз в полгода программа
будет получать в каком-то месте неожиданный для вас ноль и выполнять совсем не ту ветку кода, которую вы планировали.
FishHook
В каком месте она страдает?
Офлайн