ФорумПрограммированиеPython → Что я, %username%, ненавижу в Python

Что я, %username%, ненавижу в Python

  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 9 сентября 2011 г. 11:15, спустя 3 минуты 46 секунд

    ЗЫ. Кстати пхп-то как раз ничего в консоль не выводит, он все в браузер тупо валит …

    я имел ввиду stdout конечно
    Сапожник без сапог
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 9 сентября 2011 г. 11:24, спустя 8 минут 54 секунды


    ЗЫ. Кстати пхп-то как раз ничего в консоль не выводит, он все в браузер тупо валит …

    я имел ввиду stdout конечно
    Ну в общем суть не в этом. Мне пока не удобно и я не понимаю как сделать удобно …
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 9 сентября 2011 г. 11:33, спустя 9 минут 4 секунды



    ЗЫ. Кстати пхп-то как раз ничего в консоль не выводит, он все в браузер тупо валит …

    я имел ввиду stdout конечно
    Ну в общем суть не в этом. Мне пока не удобно и я не понимаю как сделать удобно …
    дебагерской панели то правда нет? расставить брекпоинты, посомтреть переменные, походить шагами по выполнению кода, посмотреть состояния?
    Сапожник без сапог
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 9 сентября 2011 г. 11:50, спустя 16 минут 54 секунды


    дебагерской панели то правда нет? расставить брекпоинты, посомтреть переменные, походить шагами по выполнению кода, посмотреть состояния?
    Это как раз можно, а вот рекурсивно сложный объект глянуть … этого нет. А мне это важней, чем пошаговая отладка … не такие уж алгоритмы сложные пишем.

    Кстати, я спиздел, что pprint объекты не показывает … просто он их в <> оборачивает и в браузере не видно. Я протупил … но проблема все-равно остается
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 9 сентября 2011 г. 15:02, спустя 3 часа 12 минут 7 секунд

    1. Про debug_toolbar ты упомянул;
    2. Про pprint тоже, но если честно мне поуши хватает и print, и как-то нормально, не жалуюсь, хотя по началу вроде и не хватало var_dump;
    3. Если хочется чтобы объекты возвращали что-то дельное для отладки, надо переопределенить __unicode__/__str__ в зависимости от ситуации;
    4. Может pdb? Есть встроенные в IDE расширения, но я не юзаю, пользуюсь порой чистым pdb.

    А вообще, я стараюсь не юзать print, а создаю свой log, в который и пишу… а в соседней вкладке тейлю и нормально
    adw/0
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 9 сентября 2011 г. 15:51, спустя 49 минут 23 секунды


    4. Может pdb? Есть встроенные в IDE расширения, но я не юзаю, пользуюсь порой чистым pdb.
    Да это я тоже нашел, но пока не понял толком как пользоваться и что там конкретно вкусного. Делаю set_trace, дальше типа в консоли куча команд, но что-то осмысленное кроме как посмотреть простую переменную пока не понимаю как делать … буду дальше разбираться.
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 2 ноября 2011 г. 7:47, спустя 53 дня 15 часов 56 минут


    1. Нету var

    В JS есть var для четкого указания в каком контексте определена переменная.
    В PHP нет, но там и контексты особо не отсвечивают.

    В питоне и контексты важны и var'а нет.

    Попробуем сделать простейшее замыкание:

    def makeClosure(value):
    def getValue():
    return value
    def setValue(newValue):
    value = newValue
    return {"get": getValue, "set": setValue}

    v = makeClosure(10)

    print v["get"]() # 10
    v["set"](5)
    print v["get"]() # хуй там - опять 10


    getValue() разделяет переменную value из объемлющего контекста, а setValue() создаёт переменную в локальном.
    Пиздец.


    Это пункт проигнорировали в обсуждениях, хотя он пожалуй самый интересный. Столкнувшись с аналогичной ситуацией и повтыкав в нее, пришел к выводу, что не такой уж пиздец. Во всяком случае, логика присутствует и заключается в том, что: Питон по умолчанию пытается работать с переменной в локальном контексте, и лишь не найдя ее ищет в глобальном. Поэтому get не найдя у себя value, возврашает ее из глобального контекста, а set в котором такая переменная присутствует устанавливает ее локально.
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 2 ноября 2011 г. 8:04, спустя 17 минут 11 секунд

    По-моему здесь логика в том, что сначала не было у питона вложенных функций и было только два контекста - глобальный и локальный.
    Потом появились вложенный функции, вложенные контексты, а поиск переменных остался по старинке.
  • adwo

    Сообщения: 913 Репутация: N Группа: Джедаи

    Spritz 11 декабря 2011 г. 6:04, спустя 38 дней 22 часа 59 минут

    Ненавижу почти все django reusable apps. Ну почему так все уебищно? Нет никакой интеграции в существующее приложение. "Или используй так как есть или иди нахуй". Например, хочу сделать регистрацию/вход/выход/профили и  т.д. Называется поставь django-registration, django-profile, а затем перепиши их заново, чтобы сделать под себя. Поэтому чаще всего гараздо легче написать все самому, чем использовать готовые решения.

    Смотрю в сторону рельс…
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 11 декабря 2011 г. 6:05, спустя 53 секунды

    что ж ты хотел, джанго - это тебе не симфони2
  • adwo

    Сообщения: 913 Репутация: N Группа: Джедаи

    Spritz 11 декабря 2011 г. 6:08, спустя 2 минуты 36 секунд


    что ж ты хотел, джанго - это тебе не симфони2
    аха :D
    Спустя 113 сек.
    на php не смотрю, мне дуд запретил :D
  • adwo

    Сообщения: 913 Репутация: N Группа: Джедаи

    Spritz 11 декабря 2011 г. 6:17, спустя 9 минут 28 секунд

    adw0rd, что скажешь?
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 11 декабря 2011 г. 6:21, спустя 4 минуты 5 секунд


    что ж ты хотел, джанго - это тебе не симфони2
    все верно. не сравнивай гавно2 с конфеткой
    Спустя 30 сек.

    adw0rd, что скажешь?
    перепиши под себя да и все. я не заморачиваюсь, тупо юзаю компоненты которые нужны, а аппс даже не смотрел, такое есть чтоли :-)
    Сапожник без сапог
  • mathete

    Сообщения: 435 Репутация: N Группа: Джедаи

    Spritz 11 декабря 2011 г. 10:03, спустя 3 часа 42 минуты 11 секунд


    Ненавижу почти все django reusable apps. Ну почему так все уебищно? Нет никакой интеграции в существующее приложение. "Или используй так как есть или иди нахуй".
    Например, хочу сделать регистрацию/вход/выход/профили и  т.д. Называется поставь django-registration, django-profile, а затем перепиши их заново, чтобы сделать под себя. Поэтому чаще всего гараздо легче написать все самому, чем использовать готовые решения.

    Смотрю в сторону рельс…


    Ещё один пример:
    "Ненавижу почти все плагины к jquery. ….. Мне тут понадобилось сделать маскированный инпут, так настроить толком несмог! Ваши все jquery шлак! Смотрю на VB"

    В общем виде (каноническом):
    "Ненавижу почти все сторонние модули к фреймворку N, языка М ….. Поэтому не только N, но и M гавно… Смотрю на O написанный на P"

    На джанго регистрация и профиль пишутся вместе за 7минут любым способным пареньком. Для этого всё есть из коробки. Всё что надо написать - это уровень конфигурирования, а не программирования.
    Сам почти никогда не пользуюсь сторонними аппами, так как или задачи специфические, или самому написать быстрее, чем гуглить.

    У джанго есть проблемы, конечно же. Но 90% обвинений, которые я слышал - это просто либо не читали доку, либо тупо непонимание довольно простых вещей, и, как следствие, просто отрицание прелестей данных инструментов.
  • adwo

    Сообщения: 913 Репутация: N Группа: Джедаи

    Spritz 11 декабря 2011 г. 10:19, спустя 15 минут 30 секунд

    mathete, я вроде как и написал, что просто легче написать свое, чем заточить что-то стороннее. в этом и вся проблема.  
    Спустя 156 сек.
    посмотри, например, на devise для рельс. вот что-то подобное я и хочу в джанго (не в плане апп для аутентификации, а простота настройки, подключения/отключения функций)

Пожалуйста, авторизуйтесь, чтобы написать комментарий!