так, будто у него есть значение по-умолчанию?
For example?
У него есть значение по умолчанию - пустой тупл
def func(x = None, *args): не считается ошибкой. Понятно, что там технически пустой тупл, но зачем это вообще поддерживать?
А почему он должен считаться ошибкой?
А как этим осмысленно пользоваться? def func(x = None, arg): Ожидаемо не работает, а тут получается какой-то вырожденный случай.
В смысле? *Аргс буквально нужен для произвольного числа аргмуметов. Почему бы не разрешить перед ними тоже иметь переменное число?
Ну а как этим значением по-умолчанию пользоваться можно, если только вообще без аргументов не запустить?
Эмм. Функцию, которую ты показал, можно запустить без аругментов
Я утверждал, что нельзя? Но вот args передать нельзя, не указав все аргументы с указанными дефлотами перед ним. Это сбивает с толку.
Почему сбивает с толку-то?
Тем что при таком порядке теряется смысл значений по-умолчанию у аргументов.
Где тут теряется смысл значений по умолчанию? У тебя любой аргумент в дефолтом может быть не передан, и его значение будет равно дефолту
Хм. Не могу нормально сформулировать, но эта конструкция выглядит неконсистетентно. И в документации расплывчато написано. Плюс не могу придумать ситуацию, когда этим можно сознательно воспользоваться.
https://t.me/ru_python/2077192 Опирайся на эту логику и все станет норм
В том и дело, что не очень норм. Ну и да, технически там всплывает эта разница между параметрами а аргументами, но она ничего не проясняет. Я понимаю, что противоречий тут не возникает потому что у args есть неявный дефолт, но именно что он неявный.
Нету там дефолта. Это кортеж всего что нашлось
Обсуждают сегодня