WEB, Python, Django, DevOps
Контакты
Местоположение
Россия, Москва и Московская обл.

Достижения

Все достижения (13)

Наибольший вклад в теги

Все теги (83)

Лучшие ответы пользователя

Все ответы (128)
  • В чём отличие @Decorator от @Decorator()?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    Декоратор - это функция, которой на вход подаётся функция и вернуть он должен тоже функцию. Например:
    @decorator 
    def foo():
     ..

    Эквивалентно foo = decorator(foo)

    Теперь про случай из вопроса. В качестве декоратора вместо обычной функции вы используете класс (точнее его объект):
    @FuncDec()
    def foo():
        print('Hello')

    Эквивалентно foo = FuncDec()(foo), а именно:
    • создаётся объект FuncDec (вызывается конструктор __init__)
    • этот объект вызывается (__call__) вместе с параметром foo
    • объект вернул функцию wrapper, которая и будет в дальнейшем выполняться вместо объявленной foo
    • профит

    Но если убрать скобки, то получится эквивалент foo = FuncDec(foo)
    То есть просто вызов конструктора, который у вас не принимает параметров - поэтому и ругается.
    Ответ написан
    Комментировать
  • Почему кол-во элементов в списке равно 0?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    Не strip, а str.split:
    string = 'foo.bar.test.ru'
    length = len(string.split('.'))
    print(length)

    https://ideone.com/IabPw7
    И не рекомендуется перекрывать именами своих переменных стандартные типы (это я про str)
    Ответ написан
    Комментировать
  • Не могу понять, почему python выкидывает исключение?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    Вы результат преобразования никуда не сохраняете.
    Вот так работает без ошибок:
    a = input()
    b = input()
    l = input()
    N = input()
    
    a = int(a)
    b = int(b)
    l = int(l)
    N = int(N)
    
    lenl = 2 * l
    lena = (2 * N - 1) * a
    lenb = 2*b *(N - 1)
    sumlab = lenl + lena + lenb
    print(sumlab)


    или можно преобразовать сразу там же, где происходит ввод:
    a = int(input())
    b = int(input())
    l = int(input())
    N = int(input())
    
    lenl = 2 * l
    lena = (2 * N - 1) * a
    lenb = 2*b *(N - 1)
    sumlab = lenl + lena + lenb
    print(sumlab)
    Ответ написан
    2 комментария
  • Зачем нужна сериализация?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    Сериализация:
    • это обобщённый процесс для структур языка программирования.
    • нужна для любого взаимодействия в системе, выходящего за рамки передачи данных в текущем скрипте: даже если вам кажется, что она не используется - это не так, она всё равно используется под капотом.

    Сериализация гарантирует (для поддерживаемых структур данных), что после процесса сериализации/десериализации вы получите те же самые структуры данных.

    Не будь её, вам бы понадобилось вручную создавать свои протоколы и методы перевода данных в вид, пригодный для передачи куда-либо.
    Ну и, модуль pickle - это встроенная реализация сериализации, но в то же время - одна из многих. Вы можете использовать, например, json, или yaml. Что угодно, что переведёт обычные структуры данных в пригодную для передачи форму (строку, байтовая строка) и вернёт (десериализует) обратно.
    Ответ написан
    7 комментариев
  • Как наиболее просто опубликовать проект Django на DigitalOcean?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    У digitalocean есть хорошие рабочие step-by-step мануалы, как развернуть то или иное. Не исключение и django:

    Как наиболее просто

    Самым простым способом может быть использование преднастроенного образа django. Правда, сам я так не делал.
    Ответ написан
    5 комментариев

Лучшие вопросы пользователя

Все вопросы (8)