def stringify(self, sep): return sep.join(str(i) for i in self)
= map(sep.join(map(str, self))
However some folks want:
def stringify(*args, *, sep:str=SomeDefault): return sep.join(map(str, args))
In order to have:
stringify(1, 2, "3", sep="-")
And I agree about the formatting, we know that str(x) and format(x) are synonyms so I'd suggest:
def stringify(*args, *, sep:str=SomeDefault, fmt=''): return sep.join(format(x, fmt) for x in args)
And the implicit call to str is really not surprising for a function called stringify IMO
If you want a language designed specifically for text processing, use Perl.
True ! However typing python -cp "1+1" is really tempting...
Python is deliberately strongly typed, so that:
2 + “2”
Raises an error. Why should:
“”.join([2, “2”]) not raise an error as well?