Форум сайта python.su
14
Наткнулся на такой код:
lst = [] if xxx: # заполняем lst return lst else: return False
Офлайн
72
ХЗ, я делаю, правда чуть иначе, для if что False, что None, что пустой список одинаково.
def xxx_list(xxx): lst = [] if xxx: # заполняем lst return lst
if xxx_list(bla_bla): # работаем со списком
Отредактировано PooH (Окт. 19, 2012 07:52:18)
Офлайн
568
Ну а почему бы и нет?
Офлайн
14
Потому что C-way? Потому что надо проверять “код” возврата?
Мне приходят в голову 2 варианта:
- Если по смыслу подходит - вернуть пустой список. Код обработчика результата останется тем же (for item in lst
- Если ситуацию можно считать ошибкой - кидать исключение.
Офлайн
14
PooHТочнее так:if xxx_list(bla_bla): # работаем со списком
lst = xxx_list(bla_bla) if lst: # работаем со списком
Офлайн
568
odnochlenПусть сишники пишут C-way,
Потому что C-way? Потому что надо проверять “код” возврата?
Офлайн
14
Если это был не сарказм: код этот я нашел в gray hat python, в котором на питоне писалась обертка к winapi.
Вот как меня радуют гости из других языков, обычно из си, которые считают, что питон - это такой более простой си, из которого можно пользоваться сишным апи, и тянут на него свои прошлые навыки. Эти ребята пользуются кодами возврата, не знают, что такое ООП.
А самое паршивое - такие люди написали минимум половину сетевой библиотеки питона (ftp, smtp, pop), с кодами возврата и кортежами в качестве результата, где состав кортежей надо каждый раз смотреть в доках, притом, что почти никакая IDE не показывает доки, как эклипс для явы. В результате, пользоваться этим напрямую без оберток почти невозможно.
Собственно, у меня есть ощущение, что так, как в ТС посте, делать не надо, и как надо делать, я просто не могу это четко сформулировать, вот и подумал, может кто поможет.
Отредактировано odnochlen (Окт. 19, 2012 10:17:06)
Офлайн
857
odnochlenс ООП точно такая же лапша получается, когда код растёт
Эти ребята пользуются кодами возврата, не знают, что такое ООП.
Офлайн
14
py.user.nextДа, не совсем удобный момент. В перле было проще с его $1 if /(regexp)/.
по теме, функции из re, например, могут возвращать None
py.user.nextСтранно, а почему же им повсеместно пользуются, и даже в сях пытаются эмулировать (типа conn_get_username©)?
с ООП точно такая же лапша получается, когда код растёт
Отредактировано odnochlen (Окт. 20, 2012 02:55:14)
Офлайн
857
odnochlenобъект с методами - это ещё не ООП
и даже в сях пытаются эмулировать (типа conn_get_username©)?
Отредактировано py.user.next (Окт. 20, 2012 08:28:15)
Офлайн