- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
NULL = object()
#...
def css_one(self, path, default=NULL):
"""
Get first element which matches the given css path or raise DataNotFound.
"""
try:
return self.css_list(path)[0]
except IndexError:
if default is NULL:
raise DataNotFound('CSS path not found: %s' % path)
else:
return default
kyzi007 28.09.2015 07:39 # +1
imihajlov 28.09.2015 10:10 # +1
3_14dar 28.09.2015 16:00 # 0
1024-- 28.09.2015 18:26 # −1
Я бы, естественно, тихо возвращал бы None по умолчанию, но раз тут питон-эксепшн-стайл и код должен быть подобен изрядно подвыпившей девице на каблуках, то пусть так и будет.
Вон в jQuery сеттеры не могут назначить undefined потому, что считают, что им не передали аргумент, и становятся геттерами. А тут явный None, красота.
3_14dar 29.09.2015 05:05 # 0
guest 29.09.2015 06:11 # 0
bormand 28.09.2015 18:58 # 0
А больше ты это никак и не сделаешь... Или вопрос в том, стоит ли вообще допускать None на выход?
wvxvw 01.10.2015 00:33 # 0
3_14dar 01.10.2015 00:50 # 0
imihajlov 28.09.2015 21:07 # +1
3_14dar 28.09.2015 22:48 # −1
imihajlov 28.09.2015 22:50 # 0
3_14dar 28.09.2015 22:56 # −3
Stallman 29.09.2015 09:50 # 0
http://ideone.com/J5yoiw
3_14dar 29.09.2015 16:37 # +2
bormand 29.09.2015 19:06 # 0
3_14dar 29.09.2015 19:33 # 0
1024-- 29.09.2015 19:13 # −2
3_14dar 29.09.2015 19:33 # 0
1024-- 29.09.2015 19:46 # 0
bormand 29.09.2015 19:49 # 0
P.S. Хотя экмадрочерам к подобному поведению не привыкать.
1024-- 29.09.2015 20:10 # 0
Да она тут слабо влияет. Был бы printf сишный, были бы те же разговоры.
> т.к. может случайно скрыть ошибку.
Ну, если аргумент недодали и функция пропускает, то ещё ладно, могут быть проблемы. А тут-то он лишний! Без него работало, с ним тоже работает, красота.
bormand 29.09.2015 20:14 # 0
А никто и не собирается защищать это небезопасное говно... Если бы не ворнинги от компилятора - юзать вообще было бы страшно.
bormand 29.09.2015 20:21 # +3
Не понимаю я такой красоты... Имхо, нарушивший контракты код должен дохнуть как можно раньше. В идеале - во время компиляции.
3_14dar 30.09.2015 01:24 # 0
bormand 30.09.2015 18:03 # 0
Если честно - ёбаная срань, которую юзать не хочется для чего-то сложнее копирования пары файликов. Хуже только батники и цмд.
Синтаксис ебанутый и некроссплатформенный (да, у sh есть несколько несовместимых говнопотомков, bash - всего лишь один из них). Надо знать о куче подводных камней. И не дай бог понадобятся регулярки...
3_14dar 30.09.2015 18:07 # 0
>Хуже только батники и цмд.
Про это еще в фатальном недостатке писали, что по традиции МС в один момент дропнули cmd и с нуля создали помершелл. Да, гомнище еще то. Честно говоря, моя основная претензия как программиста к башу/цмд (одмины/эникеи/красноглазики могут тут смотреть иначе) - все - строка. Чтобы строку куда-то передать, надо ее безопасно заэскейпить итд. Помершелл при своей сравнительной сложности гораздо ближе к языку программирования, хоть и странному (результат "2"*3 и 3*"2" разный).
Вот нагуглилось http://stackoverflow.com/a/180630 . Изъябываемся чтобы параметр внезапно не стал ключем.
bormand 30.09.2015 18:12 # 0
Я это писал? Покажи мне цитату.
> основная претензия
Это ты ещё регулярки не видел, где половина эскейпов вверх-ногами работает (часть символов надо эскейпить чтобы оно получили специальный смысл)... И с циклом for не работал, который по-дефолту если файлов не нашёл выполняется один раз с нераскрытой маской...
> Вот нагуглилось
Ну и это тоже, да.
3_14dar 30.09.2015 18:30 # 0
>Это ты ещё регулярки не видел
Лол? Я знаю что это такое, мы их в треде про pyparsing обсуждали, забыл?
bormand 30.09.2015 18:33 # 0
1024-- 30.09.2015 18:46 # 0
bormand 30.09.2015 18:52 # 0
3_14dar 30.09.2015 19:13 # 0
bormand 30.09.2015 19:16 # 0
3_14dar 30.09.2015 19:17 # 0
bormand 30.09.2015 19:22 # 0
CHayT 30.09.2015 20:43 # 0
сразу видно, что кто-то emacsом не пользуется
это POSIX-синтаксис, которой исторически появился раньше PCRE, кстати
roman-kashitsyn 01.10.2015 08:34 # +4
Да, мы уже с тобой как-то обсуждали этот вопрос. Баш был нужен для того, чтобы с минимальным кол-вом синтаксического шума склеивать простые глупые программы и получать результат. Кмк, это средство интерактивного взаимодействия с системой, а не средство для написания нетривиальных программ.
Сложные скипты на шелле - это как метапрограммирование в 98 крестах:
1. врядли о нём задумывались при создании
2. выглядит как говно
3. цели не всегда оправдывают средства
Если искать альтернативы, то не совсем понятно, чем заменить передачу данных плейнтекстом и извечный парсинг. Плейнтекст наиболее приятен глазу, но парсить его геморно.
Кмк, проблему могли бы решить S-выражения. Они вполне читабельные, и неплохо подходят для сериализации с минимальным оверхедом. Использование диалекта схемы в качестве интерпретатора позволило бы сильно упростить рутинные задачи вроде парсинга параметров командной строки.
Но не всем ведь нравятся скобочки.
3.14159265 01.10.2015 17:31 # +1
>1. врядли о нём задумывались при создании
Годная метафора. Мне на ум пришла довольно пошлая, не буду озвучивать.
3_14dar 01.10.2015 18:13 # −1
Открыть json файлик в просмотровщике не судьба?
Stallman 30.09.2015 00:30 # +2