Ashot
Господа, всем привет!
Ламеру нужна помощь!
Ashot
опишу свою проблему:
Ashot
пишу телеграм-бота на питоне.
Нужно, чтобы передавался массив картинок с помощью метода SendMediaGroup (telegram API). В документации API написано, что необходимо передавать массив через json-запрос (A JSON-serialized array describing photos and videos to be sent, must include 2–10 items)
И тут-то я посыпался. Помогите сформировать такой json-запрос
Ashot
https://core.telegram.org/bots/api#sendmediagroup
Вот ссылка на метод в документации
Anonymous
Ламеры
Aquinary
Какие ламы?
Nickolai
южноамериканские, по всей видимости
λ
Просто пришел сюда, бить по рукам мудаков которые думают что в Python есть многострочные комменты
λ
λ
ПО РУКАМ ВАМ !"№:
Bogdan (SirEdvin)
А как же докстринги?
Nickolai
готовь руки
λ
λ
А вот я над вами могу))
λ
Aquinary
λ
Если перенести в English то будет так как нужно прям!
λ
(здесь был фанатеющий от кода стикер)
Nickolai
λ
λ
Или вот)
λ
А зачем делают так?
class SomeClass:
def __init__(self, **kwargs):
self.name = kwargs['name']
Bogdan
затем же, зачем пишут любой другой говно-код. незнание, лень, копипаста... возможно в старом питоне было какое-то ограничение связанное с этим, тогда по привычке
Nickolai
например если большое количество аргументов тогда так юзают или когда фабрика классов, где неопределенное количетсво аргументов, правда, в таком случае, лучше было бы юзать что-то вроде kwargs.get('name', 'noname')
Aquinary
**kwargs сильная штука, люблю её. Позволяет потом вызывать методы в стиле func1(param1='value1', param2='value2'), что куда более наглядно, чем стандартная передача аргументов
Aidar
Bogdan
если их много, да. в данном примере лучше ИМХО __init__(self, name: str=None, **kwargs) Так сразу понятно, что кормить надо
Bogdan
и тогда выведение типов в пичарме не отвалится
Bogdan
Bogdan
def fn(x, y): ...
fn(y=1, x=2)
Aquinary
def fn(x, y): ...
fn(y=1, x=2)
Можно. Но есть некоторый ряд удобств кваргов перед именными аргументами.
Например, не нужно заботиться о совпадении наименований аргументов и их вызове (острая боль прямиком из си, где надо было смотреть, чтобы в хедере и в сорце список аргуметов совпадал)
Так же, когда стоит формальное ограничение в 80 символов, то гораздо проще формировать словарь и далее передавать его в качестве аргумента.
Ну и уже внутри самого метода - params['value1'] выглядит куда симпатичнее, чем просто 'value1'. И более понятно для читающего
Bogdan
видимо у нас разные вкусы. я работаю с пичармом и без автодополнения не очень как то. и да, fn(**{'x':1, 'y':2}) то же все еще работает.
Aquinary
Aquinary
Разве что не всегда понятно, что должен передавать, но это правится хорошо прописанными докстрингами
Aquinary
Ну, пока не сталкивался с такой необходимостью, будет проблема - будем стараться решить её :)
Подход не самый лучший, но я могу всё списать на недостаток опыта.
Во всяком случае пока ещё не встречал (или плохо искал?) статей, которые не рекомендуют использовать **kwargs в своих проектах😌
Bogdan
их (как и прочие плюшки питона) надо к месту использовать. я какое-то время везде лепил конструкции list(map(lambda x: ..., some_list)), хотя минимум половину стоило заменить на [... for x in some_list] банально для читабельности, так как производительность примерно одна и та же
Aquinary
У меня есть пару мест, где они не совсем к месту.
send_post(tags="#tags", content=None, text='Тест')
Например, вот в отрывке выше хотелось бы убрать возможность опускать параметр content. Хотя сейчас основные "загвоздки" состоят не в этом - только недавно определился с видом того, каким образом буду оформлять вызовы самих функций:
send_post(
tags="#tags",
content=None,
text='Тест')
Это не самый удачный пример, но это выглядит лучше, чем гугловский стиль (например), во всяком случае на мой взгляд. Стандарту pep-8 это так же не противоречит.
Ну и на тостере (https://toster.ru/q/489488) один из ответчиков расписал, почему такой вариант является достаточно неплохим
Bogdan
У меня есть пару мест, где они не совсем к месту.
send_post(tags="#tags", content=None, text='Тест')
Например, вот в отрывке выше хотелось бы убрать возможность опускать параметр content. Хотя сейчас основные "загвоздки" состоят не в этом - только недавно определился с видом того, каким образом буду оформлять вызовы самих функций:
send_post(
tags="#tags",
content=None,
text='Тест')
Это не самый удачный пример, но это выглядит лучше, чем гугловский стиль (например), во всяком случае на мой взгляд. Стандарту pep-8 это так же не противоречит.
Ну и на тостере (https://toster.ru/q/489488) один из ответчиков расписал, почему такой вариант является достаточно неплохим
send_post(content, tags="#tags") - content обязателен
Bogdan
здесь все очень хорошо разжевано на примерах https://docs.python.org/3/tutorial/controlflow.html#more-on-defining-functions
Bogdan
Bogdan
Bogdan
с этим согласен, на определенном этапе надо пробовать самому написать все что видишь почти😅 от 3d движка, до эмулятора консоли линукса
Aquinary
Yaroslav
чот у вас тухляк какой-то
Yaroslav
в других чатах на 2к сообщений в день разводят)
Nickolai
флуд ради флуда?
Михаил
Nickolai
плюсану
Yaroslav
Дело не в нужно, а в том, что обсуждают всё подряд)
Vladimir
у нас флуд по пятницам в преддверии выходных)
Aquinary
Попробуйте проект какой-нибудь реализовать под свои цели, заодно и подтянитесь по навыкам, вытягивая нужную информацию по тем или иным вещам
Я тоже новичёк, но толку от всех этих курсов без применения их на практике?
А что за курс от маил ру? Текстовой или вебинар?
Aquinary
Попробуйте это посмотреть и после решите, нужен ли этот курс Вам или нет)
Aquinary
This channel is unavailable due to copyright infringement.
Aquinary
Очень разочарован в курсах в видеоформате, одно сплошное бубнение, ни дикции, ни постановки речи
Aquinary
Экспрессии тоже никакой. Вот когда учился, были преподаватели, так они объясняли, с чувством, с толком с расстоновкой. И это можно было слушать и иногда даже интересно
Aquinary
А в таких курсах будут целый час рассказывать о том, как поставить питон третий к себе на компьютер и вывести "Привет, мир!"
Aquinary
Разочарование, в общем-то. Но дело Ваше :)
Vitaly
мой путь - дип инто пайтон, кукбук питоновский, мануал фласка и джанги
Vitaly
параллельно почитываю книжку саммерфильда по паттернам и планиую почитать еще одну по работе бигдата
Vitaly
15 лет перла - это серьезно..
Vitaly
кстати, а никто не хочет на электронную книжку по пайтону скинуться?
Vitaly
я чото на нее облизываюсь, но платить за электронку 20 баксов как-то жмет слегка
Павел
Приветствую! Вопрос а кто нибудь в pyqt шарит?
Aquinary
Очень интересно было бы послушать
Aleksandr
а ты ставишь и запускаешь в одном окружении? и в тех ли версиях питона?
Aleksandr
да и импортируешь ли верно? https://pypi.python.org/pypi/future
Aleksandr
так ты проверь просто)
Aleksandr
что версии верные, что импорт правильный. Если я нашел этот самый модуль, то импорт там с future, а не future, по крайней мере так указано в доке модуля
Aleksandr
а питон сам потом как запускал? python или python3 ?
Aleksandr
а там вообще не то, там ссылка на модуль http://code.activestate.com/recipes/84317/, какой то самопальный
Aleksandr
скопируй код в файл с именем future и положи рядом
Aleksandr
там какая то реализация на тредах с таким же просто именем