Ответы пользователя по тегу Python
  • Какой существует оптимальный способ кеширования функции?

    JRazor
    @JRazor Автор вопроса
    Senior StarkOverFlow Programmer
    Если кому интересно, то вот класс-декоратор для кеширования ответов функции для некоторого времени. Возможно перепишу позже, чтобы задавать максимальное время жизни ответа через декоратор:

    https://gist.github.com/gitex/2e0a078bf382aed17200...
    Ответ написан
    Комментировать
  • Где почитать про scrappy на русском?

    JRazor
    @JRazor
    Senior StarkOverFlow Programmer
    Я бы не советовал брать Scrapy, если проблемы с английским. У Scrapy хорошая документация, но она на английском. Чтение разных статей с разными примерами не заметит полноценного и ясного чтения документации. Можете либо потихоньку разбирать с переводчиком ибо ничего сложного там нет, если вы программировали раньше, либо...

    Возьмите Grab - те же асинхронные пауки, но документация полностью на русском.
    Ответ написан
    Комментировать
  • Правильно ли я работаю с ООП?

    JRazor
    @JRazor
    Senior StarkOverFlow Programmer
    Небольшие замечания по коду:
    1) path = Upload.get_path(folder_name, id)
    Вы немного не так используете вызовы класса внутри его же самого. Почитайте про self:
    path = self.get_path(folder_name, id)
    2) Зачем вам столько @staticmethod? Убирайте все, кроме get_path, подставляйте везде self и читайте первое замечание.
    3) from poliv.settings. А чего не from poliv.nastroiki?
    4) get_files, return images. Читайте про yield
    5) Используйте хотя бы цифры для format, а лучше именуйте:
    """<img src="{image}" style="max-width: 250px; width:100%" class="{class}">""".format(
        image=images_path + file, class=i_class)

    И да, зачем вам тройные кавычки?
    6) Если хотите, чтобы ваш класс работал не только на вашей системе используйте os.path.join вместо +
    Ответ написан
  • Как красиво отсортировать список в Python?

    JRazor
    @JRazor
    Senior StarkOverFlow Programmer
    С чего вы взяли, что стиль Python - это одна строчка? Python'исты наоборот не любят такие строчки.

    import this

    • Красивое лучше, чем уродливое.
    • Явное лучше, чем неявное.
    • Простое лучше, чем сложное.
    • Сложное лучше, чем запутанное.
    • Плоское лучше, чем вложенное.
    • Разреженное лучше, чем плотное.
    • Читаемость имеет значение.
    • Особые случаи не настолько особые, чтобы нарушать правила.
    • При этом практичность важнее безупречности.
    • Ошибки никогда не должны замалчиваться.
    • Если не замалчиваются явно.
    • Встретив двусмысленность, отбрось искушение угадать.
    • Должен существовать один — и, желательно, только один — очевидный способ сделать это.
    • Хотя он поначалу может быть и не очевиден, если вы не голландец[9].
    • Сейчас лучше, чем никогда.
    • Хотя никогда зачастую лучше, чем прямо сейчас.
    • Если реализацию сложно объяснить — идея плоха.
    • Если реализацию легко объяснить — идея, возможно, хороша.
    • Пространства имён — отличная штука! Будем делать их побольше!
    Ответ написан
    4 комментария
  • Геймдев после python?

    JRazor
    @JRazor
    Senior StarkOverFlow Programmer
    Python изучают не для начала какой-то области. Его изучают из-за легкого и быстрого вхождения, что позволяет легче понимать, как работает программирование в целом.

    Движок для инди-игр - смотря что за игры. Но могу сказать, что Unity проще и порог вхождения ниже.
    Ответ написан
    2 комментария
  • Какой игровой движок для разработки игр 3D на python посоветуете?

    JRazor
    @JRazor
    Senior StarkOverFlow Programmer
    Никакой. Python - высокоуровневый язык и не предназначен для разработки игр. На том же Unity простую 3D игру сделать в сотни раз легче.

    А чтобы просто поиграться - берите любой. Это не имеет значения, главное чтобы вам было весело.
    Ответ написан
    1 комментарий
  • (Python) В чем проблема?

    JRazor
    @JRazor
    Senior StarkOverFlow Programmer
    Приучайтесь прописывать в начале:
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-

    Чтобы не было проблем с кодировками. По идее, проблема должна исчезнуть.
    Ответ написан
    8 комментариев
  • Как передавать кирилицу в URL?

    JRazor
    @JRazor
    Senior StarkOverFlow Programmer
    Почему в последнее время так много постов про юникод? habrahabr.ru/post/135913
    Ответ написан
  • Как исправить ошибку Python?

    JRazor
    @JRazor
    Senior StarkOverFlow Programmer
    Извините, но здесь не личная техподдержка Python и разбирать ваш код с ужасно именнованными переменными никто не будет. Учитесь искать ошибки самостоятельно, иначе выльется в плохую привычку.

    Могу только порекомендовать обратить внимание на ошибку в эмуляторе Python и погуглить ее. Ошибки эмулятор выявляет и показывает хорошо, так что проблем возникнуть не должно.
    Ответ написан
    Комментировать
  • Как правильно запустить парсер на Scrapy?

    JRazor
    @JRazor
    Senior StarkOverFlow Programmer
    К сожалению, пока что не было необходимости в решении подобной задачи. Но для запуска периодических задач как альтернативу Cron могу посоветовать celery.
    Ответ написан
    Комментировать
  • Как проверить рабочий ли прокси ч/з который хочу слать запросы, python?

    JRazor
    @JRazor
    Senior StarkOverFlow Programmer
    Гуглите "python proxy checker". Например, это - stackoverflow.com/a/10862054
    Ответ написан
    Комментировать
  • Как организовать очередь на Python?

    JRazor
    @JRazor
    Senior StarkOverFlow Programmer
    Копайте в сторону модуля Queue. К примеру, можете почитать вот здесь: john16blog.blogspot.com/2012/05/python-queue.html
    Ответ написан
    Комментировать
  • С чего начать учить python?

    JRazor
    @JRazor
    Senior StarkOverFlow Programmer
    Нет, ну серьезно. Каждый день кто-то создает тему про Python. Сколько уже можно?

    Вот вам ссылка, в первый и последний раз: Изучение Python
    Ответ написан
    2 комментария
  • Как обойти сайт на python?

    JRazor
    @JRazor
    Senior StarkOverFlow Programmer
    Парсите URL категорий (используйте, к примеру, xpath), переходите по ним и парсите необходимые ссылки на страницу. Потом переходите на страницу и выбираете данные (RegExp, XPath или что-то еще).

    Не знаю, как это делается в Grab, поэтому рассказал вам алгоритм. Натягиваете код на алгоритм и вуаля!
    Ответ написан
    Комментировать
  • Как определить наличие латинских букв в строке?

    JRazor
    @JRazor
    Senior StarkOverFlow Programmer
    Ну, я знаю три способа:

    1) Проверяем RegExp'ом - "[A-Za-z] без цифр и [A-Za-z0-9] с цифрами. Самый простой вариант.

    2) Можете проверить посимвольно через ASCII таблицу:
    >>> ord('a')
    97
    >>> chr(97)
    'a'
    >>> chr(ord('a') + 3)
    'd'

    Ищете числовые значения необходимых вам символов и проверяете.

    3) Создаете строку с перечислением необходимых вам символов. Топорно, но быстрее и в составлении, и в проверке, чем второй вариант.

    Нужно учесть, что в инструменте, с которым вы работаете, уже может находиться встроенная проверка на вилидность символов.
    Ответ написан
    3 комментария
  • Python: как проверить URL на правильность?

    JRazor
    @JRazor Автор вопроса
    Senior StarkOverFlow Programmer
    Проблему решил. Познакомился с функцией errback (альтернатива callback в Request запросах Scrapy).
    Ответ написан
    Комментировать
  • Как работает наследование в Python 3?

    JRazor
    @JRazor
    Senior StarkOverFlow Programmer
    Наследование чего? Класса? Метода?

    Читайте про ООП в Python (первая же ссылка в гугле): ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%8A%D0%B5%D0%...
    Ответ написан
    Комментировать
  • Как в Scrapy реализовать последовательный или параллельный запуск пауков?

    JRazor
    @JRazor Автор вопроса
    Senior StarkOverFlow Programmer
    Уже понял, что реактор не нужно перезапускать. Нужно запускать один реактор. Решилось все следующим образом:

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    from scrapy.crawler import Crawler
    from scrapy.utils.project import get_project_settings
    from twisted.internet import reactor
    
    # Импортирем пауков
    from spiders.newenglandfilm import NewenglandFilm
    from spiders.mandy import Mandy
    from spiders.productionhub import ProductionHub
    from spiders.craiglist import Craiglist
    
    from spiders.my_settings import options
    
    # Передаем настройки
    settings = get_project_settings()
    settings.overrides.update(options)
    
    # Запускаем четыре паука по очереди
    crawler = Crawler(settings)
    crawler.configure()
    crawler.crawl(NewenglandFilm())
    crawler.start()
    
    crawler = Crawler(settings)
    crawler.configure()
    crawler.crawl(Mandy())
    crawler.start()
    
    crawler = Crawler(settings)
    crawler.configure()
    crawler.crawl(ProductionHub())
    crawler.start()
    
    crawler = Crawler(settings)
    crawler.configure()
    crawler.crawl(Craiglist())
    crawler.start()
    
    # Запускаем реактор
    reactor.run()
    Ответ написан
    Комментировать
  • Как получить опыт для устройства на работу Python Developer?

    JRazor
    @JRazor
    Senior StarkOverFlow Programmer
    Сначала пишите для себя. Пробуйте решать задачи, играться с разными GUI, базами данных и прочими кошерными вещами. Потом можете попробовать пофрилансить. Опыт + заработок. Я не знаю, насколько это поможет при устройстве на работу (тут все зависит от компании), но писать более-менее нормальный код рано или поздно научитесь. Опыт должен быть не в вашей трудовой книге, а в вашей трудовой голове. Сразу говорю - сам в организации не работал программистом Python (не повезло с городом), но писать научился.

    А лучше, конечно же, стараться и выбиться в джуниоры. Там вас всему научат)
    Ответ написан
    Комментировать