Это чистый антипаттерн , поэтому в Python не существует "правильного" или "правильного" способа сделать это (или большинство, если не все другие языки).Вы наверняка можете предложить широкий спектр хрупких решений, но это тот тип вещей, который в долгосрочной перспективе приводит к ошибкам, приносящим очень мало пользы.
Эта проблема решается путем полного отказа от этой схемы итребуется, чтобы пользовательский ввод соответствовал одному шаблону вместо двух или более.
Вместо этого интерфейса:
map_or_single(single, func, ...)
map_or_single(iterable, func, ...)
У вас есть этот интерфейс:
map_or_single([single], func, ...)
map_or_single(iterable, func, ...)
Требуется одинОбертываемые значения - это небольшая цена, которую нужно заплатить, чтобы избежать всех потенциальных головных болей, которые могут легко возникнуть из-за этого паттерна.
И, очевидно, если ситуация позволяет:
func(single)
map(func, iterable)