Ну вот как так можно написать, а? С той стороны приезжает JSON, я его парсю, нахожу в нем 'command', который 'exit' и в отладочной печати вижу "Now exiting the hive", но не вижу "Listener exits". И это нынче один из самых модных языков для разработки.
(
Read more... )
Comments 23
DISCLAIMER: я с питоном не очень детально знаком
Reply
Reply
я так понимаю, что это пост ненависти к "форматной зависимости"
Reply
Но это же постараться надо -- их обычно редактор расставляет, и расставляет правильно.
PS flake8/pep8 вроде умеют показывать на такое пальцем
Reply
Reply
Reply
Reply
Reply
С тем же успехом у тебя могло вылезти что-то похожее на C++ (особенно если ты в нем не шаришь и впервый раз что-то написать решил). Уж его-то ты не зовешь "скриптовым" - как ни старайся.
Это я к тому что ты теперь понимаешь не "разницу между "скриптовым" языком и языком программирования", а разницу между инструментом, которым владеешь, и тем, которым не умеешь пользоваться. В любом случае не стоит уподобляться и гнать на язык
Reply
В С++, очевидно, могло вылезти не только что-то подобное, но много хуже (и вылезало тыщи раз). И если бы у меня так странно вела себя отладочная печать, то я бы взял в руки gdb и решил бы вопрос за время, необходимое для написания псто в ЖЖ. А в петоне же отладчик не нужен, правда? Работает искаропки.
Вот о чем и речь - какая коропка, так и работает.
Reply
Проверил, два предположения не подвердились (до моего браузера доехали только пробелы). В чем же было дело?
Я проверил на таком коде (снипет в посте сам по себе не запускается):
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()
После запуска выводится ( ... )
Reply
Reply
Мне except кажется подозрительным, он поймает все ошибки, включая опечатки в именах переменных.
Reply
Собственно это и есть зогатко: print перед break работает, а сам break - нет.
Reply
Leave a comment