The only subtle way it fails, which I can think of is:
In [27]: foo = (1,2) In [28]: '%s' % foo --------------------------------------------------------------------------- TypeError Traceback (most recent call last) ----> 1 '%s' % foo TypeError: not all arguments converted during string formatting
'%s' % (foo,)
1. I know/control the input while string formatting.
2 String-formatting tuple comes up rarely.