Ответы пользователя по тегу Python
  • Как сделать https запрос на python 3.4 через прокси?

    Существует форк относительно старой версии requests, способный работать с SOCKS-прокси - requesocks.

    В будущем этот функционал должен перекочевать в requests.
    Ответ написан
  • Как отобразить геоданные при помощи Python/e.t.c.?

    Большой популярностью пользуется Leaflet. Очень удобная вещь.

    Передавать карте данные из Python-программы можно через JSON посредством плагина LayerJSON.

    Рисовать геодезические окружности вокруг точки можно посредством Leaflet.Geodesic.

    Ну а чтобы эффективно хранить геоданные в самой программе - используйте GeoDjango на PostgreSQL.
    Ответ написан
    Комментировать
  • Почему в школах до сих пор преподают Pascal а не Python?

    Вообще да, Python гораздо приятнее Паскаля и я бы выбрал для обучения именно его. Прежде всего вследствие обилия библиотек. Школьника нужно заинтересовать, чтобы он начал работать мозгом, а для этого нужны интересные проекты. Хочется сделать графику? Пожалуйста, pygame. Хочется использовать устройство по USB? Да сколько угодно. Анализировать HTML-код? Да десятью разными способами.

    Однако, смена Паскаля на Python как таковая не решит той проблемы с обучением информатике, какая присутствует в системе образования. Корни этой проблемы лежат в структуре системы образования и в качестве обучения самих учителей. А также, как это ни банально, в уровне их жизни.

    Нет особой разницы, чему плохо учить школьников: Паскалю или Питону. Если же вы хотите научить Питону - существуют факультативы и кружки, если руководство школы поддерживает инициативу.

    Если министерство образования в директивно-приказном порядке решит вдруг сделать такое изменение, это вряд ли принесёт кому-то пользу. Только море головной боли и затраты бюджетных средств.
    Ответ написан
    Комментировать
  • Для чего нужен Python?

    Странно читать такой вопрос, вышедший из-под пальцев учителя информатики. Следует подумать, тем ли делом вы занимаетесь, коли вам проще задать вопрос на Тостере, нежели в Гугле.

    Занимался обучением школьников программированию на Python. Язык простой, легко усваивается, и писать на нём куда интереснее, чем на Паскале. Плюс обилие библиотек - можно сразу делать реальные работающие вещи. Мы делали очень примитивные игрушки типа Pong. Обстоятельства сложились так, что занятия пришлось оставить, не доведя до логического конца.

    На тот момент нам уже надоели игрушки, начали управлять манипулятором-"рукой", подключённым к компьютеру. Планировалось попробовать многое - веб-камеру и компьютерное зрение, управление программой с помощью подключённого по USB игрового манипулятора.
    Ответ написан
    2 комментария
  • Как красиво (и желательно понятно) решить задачу со строками и списками?

    Вы, я думаю, сильно уж усложняете. Вот такое решение как? Или я неправильно понял задачу?

    def get_guessed_word(secret_word, letters_guessed):
        return ' '.join(
            char if char in letters_guessed else '_'
            for char in secret_word
        )
    
    print get_guessed_word('test', ['t', 'e', 'f', 'k'])


    Возвращает

    t e _ t

    P. S. Имена переменных и функций в Python принято писать в нижнем регистре через знак подчёркивания.
    Ответ написан
  • Как убрать цикл в python?

    А попробуйте вот так, в предположении, что второй аргумент функции export_field называется obj:

    import functools
    
    def export_resource(self, obj):
        return map(
            functools.partial(self.export_field, obj=obj),
            self.get_fields()
        )


    Тут спрашивают, зачем. А затем! Потому что красиво. Мне нравится такая функциональщина :) На Скале оно бы ещё красивее выглядело.
    Ответ написан
    Комментировать
  • Как присвоить значение элементу многомерного словоря?

    Можно сделать, используя тип defaultdict, заданный рекурсивно.

    from collections import defaultdict
    
    tree_dict = lambda: defaultdict(tree_dict)
    
    my_tree = tree_dict()
    my_tree["my"]["cool"]["tree"] = 'Hello!'
    >>>
    Ответ написан
    Комментировать
  • Как сложить поэлементно два словаря в Питоне?

    - Словарь, ключами которого является непрерывное подмножество целых чисел, эквивалентен множеству или списку, если вам нужен порядок элементов.
    - Описанная вами операция называется декартовым произведением множеств.
    - Список букв алфавита необязательно задавать явно.

    import string, itertools
    alphabet = string.uppercase
    product = map(''.join, itertools.product(alphabet, alphabet))
    print product


    Ну если очень хочется индексов...

    print dict(enumerate(product))
    Ответ написан
    Комментировать
  • Что использовать - ODBC vs OLEDB в python?

    Не работал ни с OLEDB, ни с ODBC, но не очень понятно - зачем? Ведь для Python существует целый ряд ORM, которые обращаются к СУБД через посредство её собственного API без дополнительной прослойки. SQLAlchemy точно работает как SQLite, так и с Oracle. Вы пишете запросы, они транслируются в диалект конкретной СУБД.

    Даже Django умеет в одном проекте использовать сразу и SQLite, и PostgreSQL, и MySQL вместе, если очень хочется.

    По поводу SAS - сказать ничего не могу; но подозреваю, что и для него есть какие-то инструменты.
    Ответ написан
  • Нужен ли фронтенд для web-application на python?

    Заранее извиняюсь за резкость, но... Извольте абстрагироваться от бэкендов-фронтендов и подумать сами.

    Если вы пишете какую-нибудь web-ориентированную IDE, редактор изображений или ещё чего-то такое, для которого нужно много кода, исполняющегося на клиенте, - ну наверное, вы для этого кода какой-нибудь фреймворк будете использовать. Нет?

    Или вам нужно простое специализированное CRUD-приложение, - пользователи загружают какие-то данные, они обрабатываются на сервере, пользователям выдаются результаты. Обработка на сервере может быть сколь угодно сложной, с искусственным интеллектом, шахматами и поэтессами, но на клиенте кроме простенькой формочки не нужно ничего. Так зачем там какой-то JS-фреймворк? Он там даром не нужен, уверяю вас.

    На Питоне можно написать и первое, и второе, и пятое, и десятое. Более того, обмен данными между фронтендом и бэкендом осуществляется в стандартных форматах - обычно это JSON, ну или HTML кусочками пересылается, иногда даже XML. Но форматы эти никоим образом не зависят от того, на каком языке написана программа на сервере. Хоть на ассемблере пишите.

    Почему люди так гоняются за волшебными словами, применяя их без нужды и, видимо, даже без понимания, что они означают и зачем? Карго-культ какой-то. Видимо, IT-курсы научили повторять модные в данный момент buzzwords, а вот головой думать - увы.
    Ответ написан
    Комментировать
  • YAML: Python vs PHP?

    PyYAML тоже, вроде бы, имеет модули на C. Вот здесь есть пример: pyyaml.org/wiki/PyYAMLDocumentation

    Я думаю, в вашем случае будет выглядеть так:

    from yaml import load, dump
    
    try:
        from yaml import CLoader as Loader, CDumper as Dumper
    except ImportError:
        from yaml import Loader, Dumper
    
    with open('example.yaml', 'r') as stream:
        data = load(stream, Loader=Loader)
    
    output = dump(data, Dumper=Dumper)
    Ответ написан
  • Как в Python обьеденить строки из списков списка в один список?

    def flatten(l):
        for el in l:
            if isinstance(el, collections.Iterable) and not isinstance(el, basestring):
                for sub in flatten(el):
                    yield sub
            else:
                yield el


    stackoverflow.com/questions/2158395/flatten-an-irr...
    Ответ написан
  • Как правильно сформулировать исключение?

    Может, не стоит превращать вводимое число в int. Пусть будет строка. Можно тогда написать s.endswith('11').
    Ответ написан
  • Как получить список целых чисел после после ввода?

    У вас в любом случае будут определённые затраты времени, без них никуда не деться. Возможно, вам поможет представление строки в виде потока (StringIO) и итеративная её обработка.

    Если вы получаете строку из внешнего источника (скажем, из файла), итеративная её обработка позволит вам свести к минимуму затраты памяти.
    Ответ написан
  • Как найти совпадение в списке python?

    Как это можно сделать без перебора? Ведь в каком-то виде, пусть и неявном, перебор всё равно будет иметь место. Вот такой, например:

    lst = [[1,2,3],[2,4,3],[5,2,1],[1,2,7]]
    prefix = [1, 2]
    
    def search(lst, prefix):
        l = len(prefix)
        for item in lst:
            if item[:l] == prefix:
                yield item
    
    print list(search(lst, prefix)))


    Или такой:
    length = len(prefix)
    results = [item for item in lst if item[:length] == prefix]
    Ответ написан
    Комментировать
  • Как выполнять отложенные задачи на бекенде?

    Альтернативный подход - вообще не хранить текущий статус пользователя. Вместо этого, хранить журнал изменений этого статуса и вычислять его текущее значение по требованию. Мне привычно рассуждать в терминах Django, на её ORM и будем ориентироваться. Пусть у вас есть своя собственная модель для пользователя - User в приложении my_auth. Пусть у него может быть два значения статуса: пустое (None) и premium - для тех, кто оплатил подписку на год. Журнал изменений статуса:

    from django.db import models
    from my_auth.models import User
    
    class StatusEvent(models.Model):
        EVENT_TYPES = [
            ('subscription', 'User subscribed to premium')
        ]
        user = models.ForeignKey(User, related_name='events')
        time = models.DateTimeField(auto_now_add=True)
        type = models.CharField(max_length=16, choices=EVENT_TYPES)
    
        class Meta:
            ordering = '-time'


    Функция вычисления статуса определена в модели User:

    from datetime import datetime
    from django.contrib.auth.models import User as DefaultUser
    
    class User(DefaultUser):
        @property
        def status(self):
            event = self.events.filter(type='subscription').first()
            if event and datetime.now() - event.time < self.subscription_duration:
                return 'premium'


    Здесь subscription_duration - длительность действия подписки, значение типа datetime.timedelta. Ну или relativedelta из dateutil можно использовать, оно удобней. Да, это влечёт постоянные проверки статуса, но не думаю, что это такая уж большая проблема в сравнении с тем, чтоб городить ещё один процесс крона или Celery, чрезмерно усложняя систему.
    Ответ написан
    Комментировать
  • Python - как в namespace функции распаковать переменные?

    Вот здесь: stackoverflow.com/questions/8028708/dynamically-set-local-variable-in-python указывается, что locals менять нельзя. Кроме некоторых извращённых случаев, которые работают далеко не всегда.

    Как я понимаю, у Вас есть словарь, притом довольно небольшой, и Вы хотите распаковать его в локальные переменные. Но зачем? Почему бы не обращаться просто к словарю? mydict['myname'] не намного длинней, чем myname.

    В принципе, можно использовать OrderedDict для того, чтоб гарантировать порядок значений, и зная этот порядок, написать что-то вроде

    myvar1, myvar2 = mydict.values()

    Но нужно ли. Потом разбираться в случае появления багов, откуда и что взялось. Explicit is better than implicit.
    Ответ написан
    Комментировать
  • Книга "Python for Kids" переведена ли на русский?

    Посмотрел книжку. Раньше её не видел. Очень интересно.

    Я занимаюсь Питоном с группой старшеклассников по курсам на http://acodemy.ru. Преподаватель из меня не очень за полным отсутствием опыта. Но там очень наглядные и удобные курсы; более того, можно создавать и свои во встроенном редакторе. Таким образом, можно предлагать ученикам прямо в браузере красиво отформатированный текст пособия, питоновскую консоль, холст, на котором можно 2D графику рисовать, опросы, тесты для контроля знаний. Всё это разбито по урокам с оценками, бейджами и статистикой для преподавателя. Обращаюсь к коллективному разуму сообщества.

    Вот и моё предложение состоит в том, чтоб попробовать сделать на базе книжки, коль она уж переводится на русский, интерактивный курс. Ибо недостаток курсов по питону на русском языке ощущается явно. Конечно, вся книжка в курс не влезет; хотя бы потому, что там используется tkinter и прочие модули. Но всё же. Стоит?

    Ответ написан