On 11/04/2016 01:48, Fillmore wrote:
On 04/10/2016 08:31 PM, Ben Finney wrote:
Can you describe explicitly what that “discontinuation point” is? I'm
not seeing it.
Here you go:
>>> a = '"string1"'
>>> b = '"string1","string2"'
>>> c = '"string1","string2","string3"'
>>> ea = eval(a)
>>> eb = eval(b)
>>> ec = eval(c)
>>> type(ea)
<class 'str'> <--- HERE !!!!
>>> type(eb)
<class 'tuple'>
>>> type(ec)
<class 'tuple'>
I can tell you that it exists because it bit me in the butt today...
and mind you, I am not saying that this is wrong. I'm just saying that
it surprised me.
I think this shows more clearly what you mean:
a = 10 # int
b = 10, # tuple
c = 10,20 # tuple
d = 10,20,30 # tuple
The difference between a and b is that trailing comma. A bit of a
kludge, but it's enough to distinguish between a single value (x), and a
one-element tuple (x,).
In this case, you might call it a discontinuity in the syntax as, when
you go from d to c, you remove ",30", including the comma, but when
going from c to b, you remove only "20".
But this can be fixed if tuples are written like this:
a = 10 # int
b = 10, # tuple
c = 10,20, # tuple
d = 10,20,30, # tuple
Now, you remove "30," then "20,". No exception.
Of course this doesn't help you parsing typical input which uses commas
as separators, not terminators!
--
Bartc
--
https://mail.python.org/mailman/listinfo/python-list