Ненависти (к Петону) псто
Sep. 7th, 2014 07:20 pmНу вот как так можно написать, а? С той стороны приезжает JSON, я его парсю, нахожу в нем 'command', который 'exit' и в отладочной печати вижу "Now exiting the hive", но не вижу "Listener exits". И это нынче один из самых модных языков для разработки.
def listen(self): print "Listening" for change in self.changes: try: if not change.get(u'deleted'): doc = change.get(u'doc') if doc: print doc if doc.get(u'command') == u'exit': print "Now exiting the hive" break except: print "Exception in changes reader!" print "Listener exits"
no subject
Date: 2014-09-08 02:51 am (UTC)DISCLAIMER: я с питоном не очень детально знаком
no subject
Date: 2014-09-08 02:59 am (UTC)no subject
Date: 2014-09-08 04:54 am (UTC)я так понимаю, что это пост ненависти к "форматной зависимости"
no subject
Date: 2014-09-08 05:02 am (UTC)Но это же постараться надо -- их обычно редактор расставляет, и расставляет правильно.
PS flake8/pep8 вроде умеют показывать на такое пальцем
no subject
Date: 2014-09-08 04:18 pm (UTC)no subject
Date: 2014-09-08 06:33 am (UTC)no subject
Date: 2014-09-08 08:54 am (UTC)no subject
Date: 2014-09-08 04:21 pm (UTC)no subject
Date: 2014-09-09 11:42 am (UTC)С тем же успехом у тебя могло вылезти что-то похожее на C++ (особенно если ты в нем не шаришь и впервый раз что-то написать решил). Уж его-то ты не зовешь "скриптовым" - как ни старайся.
Это я к тому что ты теперь понимаешь не "разницу между "скриптовым" языком и языком программирования", а разницу между инструментом, которым владеешь, и тем, которым не умеешь пользоваться. В любом случае не стоит уподобляться и гнать на язык.
no subject
Date: 2014-09-09 08:27 pm (UTC)В С++, очевидно, могло вылезти не только что-то подобное, но много хуже (и вылезало тыщи раз). И если бы у меня так странно вела себя отладочная печать, то я бы взял в руки gdb и решил бы вопрос за время, необходимое для написания псто в ЖЖ. А в петоне же отладчик не нужен, правда? Работает искаропки.
Вот о чем и речь - какая коропка, так и работает.
no subject
Date: 2014-09-09 10:45 pm (UTC)Эм. Я использую отладчик. Из каробки - да. Любая нормальная (поумнее Notepad-а) IDE для Пайтона умеет код отлаживать стандартным пайтоновским отладчиком. В чем проблема-то?
no subject
Date: 2014-09-09 10:58 pm (UTC)Собственно как я и сказал: ты совершенно не знаешь инструмент которым пользуешься, но виноват в этом, по твоему мнению не ты, а инструмент. Документация к инструменту (к Пайтону), кстати, хорошая. На редкость. Так что обвинять документацию не выйдет. :)
no subject
Date: 2014-09-09 10:58 pm (UTC)no subject
Date: 2014-09-09 11:00 pm (UTC)Да - не 5-ти летняя "свежесть". Всеголишь 1,5-годичная "свежесть". :)
no subject
Date: 2014-09-08 10:46 am (UTC)Проверил, два предположения не подвердились (до моего браузера доехали только пробелы). В чем же было дело?
Я проверил на таком коде (снипет в посте сам по себе не запускается):
import simplejson class X: def __init__(self): self.changes = simplejson.loads( '[{ "doc" : { "command" : "exit" }}] ' ) def listen(self): print "Listening" for change in self.changes: try: if not change.get(u'deleted'): doc = change.get(u'doc') if doc: print doc if doc.get(u'command') == u'exit': print "Now exiting the hive" break except: print "Exception in changes reader!" print "Listener exits" X().listen()После запуска выводится:
Listening
{'command': 'exit'}
Now exiting the hive
Listener exits
no subject
Date: 2014-09-08 04:20 pm (UTC)no subject
Date: 2014-09-09 08:04 am (UTC)Мне except кажется подозрительным, он поймает все ошибки, включая опечатки в именах переменных.
no subject
Date: 2014-09-09 08:29 pm (UTC)Собственно это и есть зогатко: print перед break работает, а сам break - нет.
no subject
Date: 2014-09-08 04:26 pm (UTC)А вот завершаться он явно не обучен и как его даже не обучить, а хотя бы отладить - совершенно непонятно.
no subject
Date: 2014-09-09 04:07 am (UTC)no subject
Date: 2014-09-09 08:33 pm (UTC)no subject
Date: 2014-09-09 11:54 am (UTC)no subject
Date: 2014-09-09 08:32 pm (UTC)Вот попробуйте так написать итерирумый класс, который честно на каждую итерацию отдает, скажем, строку, но из этого цикла выйти брейком не получается. Я не могу даже придумать как так "неправильно" написать.
no subject
Date: 2014-09-09 10:50 pm (UTC)1) даже код, который ты выложил - изменен, я б даже сказал исковеркан html-форматированием;
2) про ChangesStream ты написал аж где-то в глубине коментов. И то мельком.
Так что там или таки баг какой-то в сборке пайтона, или ты что-то упустил, и тут нам не прописал. Второе - вероятнее. Чисто статистически.