Странность: После некоторых экспериментов я пришел к выводу, что вставка бесполезной строки (print "hi"
, или x = 1
). В любом случае код ниже заставляет его работать правильно.Оператор печати Python изменяет поведение кода?
Что происходит? Я хотел бы понять, как Python обрабатывает этот код, что вызывает это странное поведение.
Некоторые контексты: Я пишу gui в wxpython. У меня есть эта функция (см. Ниже), которая заставляет инструмент менять значки при нажатии (путем удаления инструмента и добавления его обратно с другим значком).
Приведенный ниже код заставляет кнопку правильно переключаться с иконками в первый раз, а во второй раз панель инструментов кажется отключенной. Я предположил, что это проблема с кодом, поэтому я поставил оператор печати, который, к моему удивлению, устранил проблему.
def configure_itunes_button(self):
'''
Configures the itunes button to either sync or unsync depending on whether itunes is currently synced
'''
if self.iTunesTool:
id = self.iTunesTool.GetId()
self.toolbar.DeleteTool(id)
else:
id = self.toolbar.GetToolsCount() + 1
if self._is_itunes_synced_locally:
self.iTunesTool = self.toolbar.AddSimpleTool(id, wx.Bitmap('images\\iTunes.png'), "Sync iTunes Library", "Sync all iTunes music and playlists to Sookbox.")
else:
self.iTunesTool = self.toolbar.AddSimpleTool(id, wx.Bitmap('images\\trash.gif'), "Stop syncing iTunes Library", "Stop syncing all iTunes music and playlists to Sookbox.")
self.Bind(wx.EVT_TOOL, self.onITunesSync, self.iTunesTool)
self.toolbar.Realize()
Удаляет ли 'print' свой код в рабочем состоянии? Тогда вы, вероятно, забыли сохранить предыдущую версию файла или забыли перезапустить свою программу и все еще выполняли устаревший код. –
Вместо использования отпечатков для отладки приложения попробуйте использовать [pdb] (http://pythonconquerstheuniverse.wordpress.com/2009/09/10/debugging-in-python/) вместо – Paco
@Martijn Pieters Нет, если я удалю распечатать код больше не работает. Я определенно спасен. Хорошая вещь, чтобы проверить хотя :) – quantka