Я не знаю, как ввести через командную строку Windows

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

res = multi_value(x)
try:
    for i in res:
        do_something_with_res(i)
except TypeError:
    do_something_with_res(res)

Учитывая, что ваша функция действительно ничего не бросает, все это рухнет до

for i in multi_value(x)
    do_something_with_res(i)

, если вы вернетесь к одному (или нет) также в виде списков. Преимущество должно быть очевидным. Вы можете подумать, что вы пользуетесь услугой звонящего, но это просто не так.

Некоторые замечания к связанной статье: я думаю, что они дали неоптимальный пример по этому вопросу. В этом примере речь идет о возврате кода ошибки vs для создания исключений, что немного отличается.

0
задан 18 January 2019 в 19:49
поделиться