
Aquinary
17.12.2017
18:27:44
В том смысле, что если объекту присваивается значение None, то и в условии его нужно провеерять как if (obj != None)?
Или достаточно просто сделать if (obj)?
Второй вариант более лаконичный, но хз, является ли он верным

Vitaliy Nameless
17.12.2017
18:35:41

Google

Aquinary
17.12.2017
18:36:01
Благодарю)

Vitaliy Nameless
17.12.2017
18:36:31
Один из постулатов Пайтона - явное лучше неявного
И проверка на ноун в данном случае правильнее, чем !obj

Aquinary
17.12.2017
18:39:36
А заюзать тенарник без else совсем не вариант?

Vitaliy Nameless
17.12.2017
18:41:12
Питоновский тернарник содержит else в любом случае

Aquinary
17.12.2017
18:41:49
эх
Тогда ещё вопросик
if (... is None) и if (is not None) или if (... is None) и else: за ним?
Такой же принцип: лучше явное, чем не явное?

Марк ☢
18.12.2017
05:46:37
(Qwe, asd) = xxx.split()

Vitaliy Nameless
18.12.2017
08:09:54
можно и без скобок

Google

Vitaliy Nameless
18.12.2017
08:10:13
или вообще заюзать namedtuple

Aquinary
18.12.2017
08:25:57
gotcha!

V
19.12.2017
09:06:38
#opennet #tls https://www.opennet.ru/opennews/art.shtml?num=47730
Пусть работа сама найдет тебя - https://t.me/jobsspbit

Ilya
19.12.2017
13:10:47
Супер
Новая вакансия:
Дизайн и создание сайта
100 руб.
https://www.avito.ru/sankt-peterburg/vakansii/dizayn_i_sozdanie_sayta_937758876

Artem
19.12.2017
13:13:38
Лол

Ашот
19.12.2017
13:41:16
Господа, всем привет!
Ламеру нужна помощь!
опишу свою проблему:
пишу телеграм-бота на питоне.
Нужно, чтобы передавался массив картинок с помощью метода SendMediaGroup (telegram API). В документации API написано, что необходимо передавать массив через json-запрос (A JSON-serialized array describing photos and videos to be sent, must include 2–10 items)
И тут-то я посыпался. Помогите сформировать такой json-запрос
https://core.telegram.org/bots/api#sendmediagroup
Вот ссылка на метод в документации

Jurij
20.12.2017
08:22:40
Ламеры

Aquinary
20.12.2017
09:04:01
Какие ламы?

Nickolai
20.12.2017
09:11:00
южноамериканские, по всей видимости

Oleg
20.12.2017
10:30:13
Просто пришел сюда, бить по рукам мудаков которые думают что в Python есть многострочные комменты
ПО РУКАМ ВАМ !"№:

Bogdan (SirEdvin)
20.12.2017
10:36:32
А как же докстринги?

Nickolai
20.12.2017
10:40:45
готовь руки

Aquinary
20.12.2017
10:47:39

Oleg
20.12.2017
10:48:09
Не получилось :)

Google

Oleg
20.12.2017
10:50:45
А вот я над вами могу))
У тебя как раз docstring (PEP 257) - все гуд ?

Aquinary
20.12.2017
10:54:22

Oleg
20.12.2017
11:03:40
Если перенести в English то будет так как нужно прям!
(здесь был фанатеющий от кода стикер)

Nickolai
20.12.2017
11:56:14
бля какой охеренный код

Oleg
20.12.2017
11:57:09
Или вот)
А зачем делают так?
class SomeClass:
def __init__(self, **kwargs):
self.name = kwargs['name']

Bogdan
20.12.2017
13:22:18
затем же, зачем пишут любой другой говно-код. незнание, лень, копипаста... возможно в старом питоне было какое-то ограничение связанное с этим, тогда по привычке

Nickolai
20.12.2017
13:40:29
например если большое количество аргументов тогда так юзают или когда фабрика классов, где неопределенное количетсво аргументов, правда, в таком случае, лучше было бы юзать что-то вроде kwargs.get('name', 'noname')

Aquinary
20.12.2017
13:48:05
**kwargs сильная штука, люблю её. Позволяет потом вызывать методы в стиле func1(param1='value1', param2='value2'), что куда более наглядно, чем стандартная передача аргументов

Aidar
20.12.2017
13:56:47

Bogdan
20.12.2017
13:57:02
если их много, да. в данном примере лучше ИМХО __init__(self, name: str=None, **kwargs) Так сразу понятно, что кормить надо
и тогда выведение типов в пичарме не отвалится
def fn(x, y): ...
fn(y=1, x=2)


Aquinary
20.12.2017
14:10:05
def fn(x, y): ...
fn(y=1, x=2)
Можно. Но есть некоторый ряд удобств кваргов перед именными аргументами.
Например, не нужно заботиться о совпадении наименований аргументов и их вызове (острая боль прямиком из си, где надо было смотреть, чтобы в хедере и в сорце список аргуметов совпадал)
Так же, когда стоит формальное ограничение в 80 символов, то гораздо проще формировать словарь и далее передавать его в качестве аргумента.
Ну и уже внутри самого метода - params['value1'] выглядит куда симпатичнее, чем просто 'value1'. И более понятно для читающего

Google

Bogdan
20.12.2017
14:12:33
видимо у нас разные вкусы. я работаю с пичармом и без автодополнения не очень как то. и да, fn(**{'x':1, 'y':2}) то же все еще работает.

Aquinary
20.12.2017
14:18:08
Разве что не всегда понятно, что должен передавать, но это правится хорошо прописанными докстрингами

Bogdan
20.12.2017
14:21:53

Aquinary
20.12.2017
14:24:58
Ну, пока не сталкивался с такой необходимостью, будет проблема - будем стараться решить её :)
Подход не самый лучший, но я могу всё списать на недостаток опыта.
Во всяком случае пока ещё не встречал (или плохо искал?) статей, которые не рекомендуют использовать **kwargs в своих проектах?

Bogdan
20.12.2017
14:27:50
их (как и прочие плюшки питона) надо к месту использовать. я какое-то время везде лепил конструкции list(map(lambda x: ..., some_list)), хотя минимум половину стоило заменить на [... for x in some_list] банально для читабельности, так как производительность примерно одна и та же

Aquinary
20.12.2017
14:40:46
У меня есть пару мест, где они не совсем к месту.
send_post(tags="#tags", content=None, text='Тест')
Например, вот в отрывке выше хотелось бы убрать возможность опускать параметр content. Хотя сейчас основные "загвоздки" состоят не в этом - только недавно определился с видом того, каким образом буду оформлять вызовы самих функций:
send_post(
tags="#tags",
content=None,
text='Тест')
Это не самый удачный пример, но это выглядит лучше, чем гугловский стиль (например), во всяком случае на мой взгляд. Стандарту pep-8 это так же не противоречит.
Ну и на тостере (https://toster.ru/q/489488) один из ответчиков расписал, почему такой вариант является достаточно неплохим


Bogdan
20.12.2017
14:42:19
У меня есть пару мест, где они не совсем к месту.
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 обязателен
здесь все очень хорошо разжевано на примерах https://docs.python.org/3/tutorial/controlflow.html#more-on-defining-functions

Aquinary
20.12.2017
14:43:54

Bogdan
20.12.2017
14:45:53

Aquinary
20.12.2017
14:46:47

Bogdan
20.12.2017
14:48:45
с этим согласен, на определенном этапе надо пробовать самому написать все что видишь почти? от 3d движка, до эмулятора консоли линукса

Aquinary
20.12.2017
18:33:04

Yaroslav
21.12.2017
08:53:25
чот у вас тухляк какой-то
в других чатах на 2к сообщений в день разводят)

Nickolai
21.12.2017
09:03:21
флуд ради флуда?

Михаил
21.12.2017
09:03:29

Nickolai
21.12.2017
09:03:42
плюсану