On 10.05.2015 10:58, Frank Millman wrote: > It is then a simple extra step to say - > > EMPTY_L:IST = () > > and if required - > > EMPTY_DICT = () > > and expand the explanation to show why a tuple is used instead. > > So if there was a situation where the overhead of testing for None became a > problem, this solution offers the following - > > 1. it solves the 'overhead' problem > 2. it reads reasonably intuitively in the body of the program > 3. it is safe > 4. it should not be difficult to write a suitable self-explanatory comment
I do understand what you're trying to do, but it is my gut-feeling that you're overengineering this and as a side-effect introducing new problems. With the above declaration as you describe, the code becomes weird: foo = EMPTY_LIST foo.append(123) Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'tuple' object has no attribute 'append' and foo = EMPTY_DICT foo["bar"] = "moo" Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment So instead, the user of this construct would have to foo = list(EMPTY_LIST) or foo = dict(EMPTY_DICT) but, coincidentially, this is easier (and more pythonic) by doing foo = list() foo = dict() to which there are the obvious (pythonic) shortcuts foo = [ ] foo = { } All in all, I'd be more confused why someone would introduct "EMPTY_LIST" in the first place and think there's some strange weird reason behind it. Explaining the reason in the comments doesn't really help in my opinion. Best regards, Johannes -- >> Wo hattest Du das Beben nochmal GENAU vorhergesagt? > Zumindest nicht öffentlich! Ah, der neueste und bis heute genialste Streich unsere großen Kosmologen: Die Geheim-Vorhersage. - Karl Kaos über Rüdiger Thomas in dsa <hidbv3$om2$1...@speranza.aioe.org> -- https://mail.python.org/mailman/listinfo/python-list