The stupidity of 'id' as a variable name (or stupidity of me)

16 September 2008   3 comments   Python

Mind That Age!

This blog post is 10 years old! Most likely, its content is outdated. Especially if it's technical.

Powered by Fusion×

Both in Zope2 and in Django you need to work with attributes called id. This is a shame since it's such a huge pitfall. Despite having done Python programming for so many years I today fell into this pitfall twice!! The pitfall is that id is a builtin function, not a suitable variable name. The reason is that I was changing a complex app to use something called the UUID as the indentifier instead of the ID which happened to be a name of a primary key in a table.

This meant lots of changes and I tested and tested and kept getting really strange errors. I took the whole thing apart and put it back together when I discovered my error of checking if variable id was set or not. id, if undefined, defaults to the builtin function id() which will always return true on bool(id).

It's been a long day. I'm going home. Two newbie mistakes in one programming session. I'm sure I'm not the only one who's been trapped by this.


I've done that a lot too, now I just use id_ as the variable name.
Peter Bengtsson
I've changed most places to 'oid' as in "object ID".
this is also common in wxPython, i only realised this was an issue after running one of my programs through pylint, which flags up something like 'using builtin function id', so i'm now also using id_
Thank you for posting a comment

Your email will never ever be published

Related posts

Why we like Obama, short answer: his speeches 11 September 2008
The importance of env (and how it works with virtualenv) 18 September 2008
Related by Keyword:
Sequences in PostgreSQL and rolling back transactions 12 May 2009
Note to self about Jeditable 22 November 2007
Related by Text:
Getting uploadify to work 17 July 2009
Geeking with tags file for Jed 29 May 2006
QUnit testing my jQuery Mobile site in full swing 17 March 2011
Date formatting in python or in PostgreSQL 20 July 2004
Catching a carriage return in bash 23 October 2006