170 похожих чатов

Во, @backinblacknext, тебе не попадалось, почему *args в сигнатуре обрабатывается

так, будто у него есть значение по-умолчанию?

18 ответов

29 просмотров

For example?

У него есть значение по умолчанию - пустой тупл

evle- Автор вопроса

def func(x = None, *args): не считается ошибкой. Понятно, что там технически пустой тупл, но зачем это вообще поддерживать?

А почему он должен считаться ошибкой?

evle- Автор вопроса
Pavel Павлик
А почему он должен считаться ошибкой?

А как этим осмысленно пользоваться? def func(x = None, arg): Ожидаемо не работает, а тут получается какой-то вырожденный случай.

evle
А как этим осмысленно пользоваться? def func(x = N...

В смысле? *Аргс буквально нужен для произвольного числа аргмуметов. Почему бы не разрешить перед ними тоже иметь переменное число?

evle- Автор вопроса
Tishka17
В смысле? *Аргс буквально нужен для произвольного ...

Ну а как этим значением по-умолчанию пользоваться можно, если только вообще без аргументов не запустить?

evle
Ну а как этим значением по-умолчанию пользоваться ...

Эмм. Функцию, которую ты показал, можно запустить без аругментов

evle- Автор вопроса
Pavel Павлик
Эмм. Функцию, которую ты показал, можно запустить ...

Я утверждал, что нельзя? Но вот args передать нельзя, не указав все аргументы с указанными дефлотами перед ним. Это сбивает с толку.

evle- Автор вопроса
Pavel Павлик
Почему сбивает с толку-то?

Тем что при таком порядке теряется смысл значений по-умолчанию у аргументов.

Где тут теряется смысл значений по умолчанию? У тебя любой аргумент в дефолтом может быть не передан, и его значение будет равно дефолту

evle- Автор вопроса
Pavel Павлик
Где тут теряется смысл значений по умолчанию? У те...

Хм. Не могу нормально сформулировать, но эта конструкция выглядит неконсистетентно. И в документации расплывчато написано. Плюс не могу придумать ситуацию, когда этим можно сознательно воспользоваться.

evle
Хм. Не могу нормально сформулировать, но эта конст...

https://t.me/ru_python/2077192 Опирайся на эту логику и все станет норм

evle- Автор вопроса
Tishka17
https://t.me/ru_python/2077192 Опирайся на эту ло...

В том и дело, что не очень норм. Ну и да, технически там всплывает эта разница между параметрами а аргументами, но она ничего не проясняет. Я понимаю, что противоречий тут не возникает потому что у args есть неявный дефолт, но именно что он неявный.

evle
В том и дело, что не очень норм. Ну и да, техничес...

Нету там дефолта. Это кортеж всего что нашлось

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта