Ответы пользователя по тегу Python
  • Формирование словаря в Python?

    werevolff
    @werevolff
    Потому, что в первом случае во встроенную ф-ию dict передаëтся итератор кортежей, а во втором - кортеж из 2 элементов (словарь и целое число). Из итератора кортежей можно сделать словарь, из кортежа, состоящего из списка и целого числа - нет.
    Ответ написан
    1 комментарий
  • В каком файле хранить переменные окружения?

    werevolff
    @werevolff
    В зависимости от окружения. Хорошим тоном для Docker является хранение переменных окружения в .env файле. При этом, на сервере не обязательно хранить сам файл: переменные окружения можно передавать при запуске контейнера, а храниться они могут где угодно. Например, в базе менеджера CI/CD, если она достаточно защищена. .env файл используется, преимущественно, для локальной разработки, чтобы разработчики не имели кредов к базам и т.д.. А как передать переменные в рабочий инстанс на сервере - это уже каждый извращается как может. Вплоть до использования защищённых областей памяти.
    Ответ написан
    Комментировать
  • Какой приоритет операций в данной ситуации с None, is и !=?

    werevolff
    @werevolff
    (1 != (None is None))

    Прежде, чем сравнить 1 и второе выражение, python вычислит выражение. то-есть:
    1. (None is None) = True
    2. 1 != True
    https://docs.python.org/release/3.0.1/reference/da...
    The Boolean type is a subtype of the integer type, and Boolean values behave like the values 0 and 1, respectively, in almost all contexts, the exception being that when converted to a string, the strings "False" or "True" are returned, respectively.


    В python3 type boolean является подтипом integer и, соответственно, значения 0 и 1 равны (но не идентичны) False и True соответственно

    (1 != None) is None

    Сначала, python должен вычислить все значения в операции сравнения (не совсем сравнения, но об этом позже). 1 != None - это верное выражение (True). Соответственно, на втором шаге:
    True is None
    is - оператор идентичности. То есть, он сравнивает не только значение, но и тип данных. Например, предыдущая задача:
    1 is True
    Out: False
    соответственно, True: boolean, None: None Типы разные, значит идентичности нет. False

    (1 != None is None)

    В этом примере используется цепочка сравнений (chaining). Запись эквивалентна
    1 != None and None is None
    Out: True

    если необходимо выполнить пошаговое сравнение, то стоит записать
    (1 != None) is None

    Приоритет у != и is должен быть одинаковый, просто в Python есть много магии, и при указанном выше выражении срабатывает преобразование, указанное выше.
    Ответ написан
    3 комментария
  • Как проверить текст на reply_message?

    werevolff
    @werevolff
    # Проверяет в keys(). Вызовет ошибку, если event.raw['object']['fwd_messages'][0] - не словарь
    if 'text' in event.raw['object']['fwd_messages'][0].keys():
        pass
    
    # Аналогичная проверка, но, допустим, если event.raw['object']['fwd_messages'][0] - это строка или iterable, не вызовет ошибки, а попытается найти 'text'
    if 'text' in event.raw['object']['fwd_messages'][0]:
        pass
    
    # Пытается получить из  event.raw['object']['fwd_messages'][0] value по ключу "text". Если такого ключа нет в словаре, вернёт default (None)
    text = event.raw['object']['fwd_messages'][0].get("text", None)
    Ответ написан
    Комментировать
  • Python не ставится библиотека?

    werevolff
    @werevolff
    Вообще, есть готовые билды некоторых пакетов python под windows: www.lfd.uci.edu/~gohlke/pythonlibs

    Однако, лично я не верю в то, что можно делать серьёзные сетевые приложения на Python под Windows. Я год парился с такой конфигурацией. Кроме массового просера сроков ничего не получил. Ещё пол года работал на Arch Linux. В принципе, система хороша для Python, но когда начинаешь работать со связками языков, арч упирается рогом. Поэтому, самый правильный вариант на Windows - поставить VirtualBox с Ubuntu 16.04. А если нет желания настраивать порты и айпишники для проекта, следует использовать Vagrant.
    Ответ написан
    Комментировать
  • Кириллица в url Python 3, как преобразовать в url?

    werevolff
    @werevolff
    from urllib import request
    from urllib.parse import quote
    
    def poiskpers(nick):
        geourl = "http://ru.wikipedia.org/wiki/{0}".format(quote(nick))
        respornse = request.urlopen(geourl)
        content = respornse.read()
        return content
    
    print(poiskpers("василий"))
    Ответ написан
  • Выучил базовые основы Python 3. Куда копать дальше?

    werevolff
    @werevolff
    Если для Web, то Django + Scrapy. На scrapy можно сразу начинать делать парсеры. Парсеры нужны очень часто, и можно сразу брать проект и делать. Для десктопа и кроссплатформенности - не знаю. Возможно, что Kivy.

    Да, чуть не забыл: Peewee. Можно и SQLAlchemy, но pewee выглядит очень изящно.
    Ответ написан
    5 комментариев