Aspiring Data Science
370 subscribers
425 photos
11 videos
10 files
1.87K links
Заметки экономиста о программировании, прогнозировании и принятии решений, научном методе познания.
Контакт: @fingoldo

I call myself a data scientist because I know just enough math, economics & programming to be dangerous.
Download Telegram
#python #debugging #vba #vb6

Вопрос к специалистам Python: почему в этом самом распространённом в мире языке программирования, который рекламируется как лёгкий для изучения, так затруднена отладка? Я начинал кодить в Visual Basic 6 и VBA, и я вам скажу, после среды отладки VB6/VBA работать в Питоне - это примерно как плыть со связанными руками. Вот написал ты скрейпер для сложных неструктурированных данных, запустил его, через два дня в середине сложного процесса он падает на непредусмотренном пустом поле, к примеру.

Дай Бог, ты запустил скрипт с параметрами -m pdb, тогда ты хоть сможешь посмотреть, на каком куске данных упало и какие были переменные. Но внести простую правку в код и продолжить с того же места ты не сможешь. Какого хрена, спрашивается? Мне этого особого места в коде опять 2 дня ждать? Это же интерпретируемый язык, какого черта? В VB6/VBA я мог спокойно в режиме отладки подправить код текущей строки, процедуры, да хоть полмодуля новых написать, поменять порядок выполнения строк, выполнить строки повторно, заменить содержимое памяти как мне надо, и продолжить выполнение уже нового кода по F5, не завершая программы.

Почему Питон такой кастрированный, кто знает? Ладно бы он был хотя бы быстрым, типизированным и компилируемым, но это же самое медленное, что сейчас есть, наверное. Я чего-то не знаю, и все как-то эту проблему решают пайчармом или какими-то другими средами? Ведь сам по себе отладчик pdb может только показать стек, и бессильно завершиться?

P.S. Это удивительный пример того, как софтверная компания (Microsoft) задушила собственного одарённого ребёнка (VB6). VB6 должен был стать тем, чем стал Python, но вместо развития (кросс-платформенности, x64) его похоронили мелкософтовские манагеры.
👍1😢1
#python #debugging #ic #icecream

from icecream import ic

# Using ic() to debug
ic(add(10, 20))
ic(add(30, 40))


ic| add(10, 20): 30
ic| add(30, 40): 70


ic.disable()  # Disables ic()
ic(multiply(3, 3)) # Prints nothing

ic.enable() # Re-enables ic()
ic(multiply(3, 3)) # Output: ic| multiply(3, 3): 9


def log_to_file(text):
with open("debug.log", "a") as f:
f.write(text + "\n")

ic.configureOutput(prefix="DEBUG| ", outputFunction=log_to_file)

ic(multiply(7, 7))


https://medium.com/pythoneers/debugging-in-python-replace-print-with-ic-and-do-it-like-a-pro-18f330c863cb
1