开发者

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

开发者 https://www.devze.com 2023-01-16 03:29 出处:网络
Consider the following snippet: >>> def foo(port, out, udp=False, ipv6=False, data=\'\'): ...if not data:

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,
...                             directi开发者_运维百科on=('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?


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'    


{:port} should be {port:}.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号