Контакты
Местоположение
Россия, Воронежская обл., Воронеж

Достижения

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

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

Все теги (29)

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

Все ответы (334)
  • Как сделать гиперссылку в Telegram Боте?

    @twistfire92
    Python backend developer
    Если используете библиотеку pyTelegramBotAPI (telebot), то при отправке сообщения пользуйтесь parse_mode и форматированием текста. В случае с гиперссылкой следует делать так:
    text = '[<Ваш текст>](<Ссылка>)'
    bot.send_message(message.chat.id, text, parse_mode='MarkdownV2')


    Подробнее о parse_mode можно найти тут: https://core.telegram.org/bots/api#formatting-options
    Ответ написан
    1 комментарий
  • Зачем в питоне объявления типов параметров функций если они понарошку?

    @twistfire92
    Python backend developer
    Да, аннотации типов чаще всего не влияют на работу (хотя некоторые фреймворки и библиотеки на них завязаны, об этом ниже). Никто не мешает указать аргумент функции типа int, а передавать строку. Если функция сможет эту строку пережевать, то все отлично отработает. Пример
    def foo(a: int):
        return a*2
    
    print(foo(4)) # 8
    print(foo('str')) # 'strstr'


    Но аннотация потому и называется аннотацией, а не типизацией. Мы даем подсказки себе и другим разработчикам, кто пользуется этим кодом. Указываем на то, какие типы тут используются. И если в случае с базовыми типами (int str list и пр.) польза не так заметна, то когда в ход пойдут свои классы, польза становится очевидной.

    А если взять, например FastApi фреймворк с Pydantic под капотом, то там уже не получится без аннотаций работать. Там вся суть на этих аннотациях завязана.

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

    Плюс аннотации зачастую помогают при работе в IDE. Например PyCharm умеет давать подсказки по ходу написания кода основываясь на аннотациях типов.

    тот кто будет ее юзать не будет же ее исходник смотреть он в доки пойдет

    Не всегда документация соответствует действительности. Ее могут забыть обновить. Она может быть написана криво. Иногда проще посмотреть на внутрянку проекта и понять что делает тот или иной метод, посмотреть какие типы он использует. В этом случае аннотации служат огромным подспорьем.

    Советую использовать их чаще.
    Ответ написан
    Комментировать
  • Как сделать диапазон цены в 1с?

    @twistfire92
    Python backend developer
    В обработчике ПриИзменении

    Можете завести отдельный регистр, в котором будете хранить допустимые диапазоны цен для каждой позиции. Измерение - ссылка на справочник товаров, ресурсы - минимальная и максимальная цена.
    В обработчике ПриИзменении уже проверять подходит ли новая цена под эти границы.
    Ответ написан
    Комментировать
  • Есть список [234543]. Как проверить, что соседнее число меньше и больше соседнего на 1?

    @twistfire92
    Python backend developer
    можно просто вычислить модуль разности соседних чисел. Если не равен 1, возвращать False

    def more_or_less_one(a):
    	for i in range(len(a)-1):
    		if abs(a[i]-a[i+1]) != 1:
    			return False
    	return True
    Ответ написан
    2 комментария
  • Существуют ли более приятные конструкции чем if elif else где на каждое значение нужно проводить разное действие?

    @twistfire92
    Python backend developer
    Во-первых код надо оборачивать в соответствующий тег.

    По вашему вопросу. В питоне как такового нет оператора case, как во многих других языках. Но из-за того, что все в питоне является объектами, даже функции, то можно провернуть все через словарь

    # прописываем соответсвие значений кубика и действий через словарь
    actions = {1: self.pass_day,
    			2: self.eat_food,
    			3: self.work_day,
    			4: self.have_fun,
    			5: self.go_shopping,
    			6: self.sleep}
    
    action = actions[dice] # получаем нужную функцию
    
    action() # Выполняем нужную функцию


    Заметьте, что в словаре прописываем имена функций без (), т.к. мы не выполняем их, а только ссылаемся на сами объекты.

    P.S. Код не проверялся, возможно где-то есть небольшие неточности, но примерно такую же конструкцию сам использовал как-то.
    Ответ написан
    Комментировать