Python ''.format(): "tuple index out of range"?

12,285

Watch the colon. Move it from the front of the port area:

Either

data = 'foo {family} {port:} {direction}'.format(

Or

data = 'foo {family} :{port} {direction}'.format(

The results of the two options are:

>>> foo(12345, out=True)
'foo ipv4 12345 out'
>>> foo(12345, out=True)
'foo ipv4 :12345 out'    
Share:
12,285
Santa
Author by

Santa

Updated on June 04, 2022

Comments

  • Santa
    Santa almost 2 years

    Consider the following snippet:

    >>> def foo(port, out, udp=False, ipv6=False, data=''):
    ...     if not data:
    ...             data = 'foo {family} {:port} {direction}'.format(
    ...                             family=('ipv6' if ipv6 else 'ipv4'),
    ...                             port=port,
    ...                             direction=('out' if out else 'in'))
    ...     return data
    ...
    >>> foo(12345, out=True)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 6, in foo
    IndexError: tuple index out of range
    

    As far as I know, the scoping of names look alright. What's with the cryptic error?