On Sunday, April 10, 2016 at 8:48:49 PM UTC-4, 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.
Perhaps the extra complication of eval is confusing things. This: >>> a = '"string1"' >>> ea = eval(a) >>> type(ea) <class 'str'> is the same as: >>> type("string1") <class 'str'> Does that surprise you? "string1" sure looks like a plain-old string to me, I'm not sure why you would think it would be a tuple. Your three expressions are: ea = "string1" eb = "string1","string2" ec = "string1","string2","string3" ea is a string, eb is a two-element tuple (both elements are strings), and ec is a three-element tuple (all elements are strings). As others have said, commas make tuples. Your first expression has no commas (and no parens!) so it is not a tuple. --Ned. -- https://mail.python.org/mailman/listinfo/python-list