In a dynamic language, why % operator asks user for type info?

marduk marduk at nbk.hopto.org
Mon Jul 16 21:06:27 EDT 2007


On Mon, 2007-07-16 at 17:33 -0700, Karthik Gurusamy wrote:
> Thanks. The above surprised me as I didn't expect that %s will accept
> 42.
> 
> Looks like the implicit conversion doesn't work the other way.
> 
> >>> '%s' % 42
> '42'
> >>> '%d' % '42'
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> TypeError: int argument required
> >>>
> 
> Looks like %s can be used even when I'm sending non-strings.
> >>> '%s foo %s bar' % (25, 25.34)
> '25 foo 25.34 bar'
> >>>
> 
> So %s seems to serve the multi-type placeholder.

According to the docs: http://docs.python.org/lib/typesseq-strings.html

By design, %s "converts any python object using str()".  OTOH it does
not specify that %d, for example, calls int().





More information about the Python-list mailing list