Laurent Claessens wrote: > Le 30/05/2011 11:02, Terry Reedy a écrit : >> On 5/30/2011 3:38 AM, Laurent wrote: >> >>> Cool. I was thinking that "5" was the name, but >>> >>> 5.__add__(6) >>> File "<stdin>", line 1 >>> 5.__add__(6) >> >> >> Try 5 .__add__(6) > > What is the rationale behind the fact to add a space between "5" and > ".__add__" ? > Why does it work ?
It's a hint for the tokenizer. $ cat show_tokens.py import sys from tokenize import generate_tokens from cStringIO import StringIO from token import tok_name _name_width = max(len(name) for name in tok_name.itervalues()) def show_tokens(s): for token in generate_tokens(StringIO(s).readline): name = tok_name[token[0]] value = token[1] print "%-*s %r" % (_name_width, name, value) if __name__ == "__main__": show_tokens(" ".join(sys.argv[1:])) $ python show_tokens.py 5.__add__ NUMBER '5.' NAME '__add__' ENDMARKER '' $ python show_tokens.py 5 .__add__ NUMBER '5' OP '.' NAME '__add__' ENDMARKER '' -- http://mail.python.org/mailman/listinfo/python-list