IMO this is a task for tools llike pylint or pychecker (both of which flag this).
Also, it's controversial -- especially since you're unlikely to want to use a builtin whose name you can't remember. :-) The builtins were not made keywords for a reason.
On Nov 27, 2007 12:31 AM, Mark Summerfield firstname.lastname@example.org wrote:
Here is a nice little Python 3 program, test.py:
import string buffer = string.ascii_letters bytes =  sum = 0 for chr in buffer: int = ord(chr) if 32 <= int < 127: bytes.append(chr) sum += 1 str = "".join(bytes) print(sum, str)
If run as:
python30a -W all test.py
It produces the expected output:
But unfortunately it uses as identifiers: buffer, bytes, chr, int, sum, and str. None of these are keywords so none of them provokes a SyntaxError. In fact there are over 130 such identifiers; print(dir(__builtins__)) to see them.
I think many newcomers to Python will find it difficult to remember 160 identifiers (keywords + __builtins__) and since some of them have appealing names (esp. buffer, bytes, min, max, and sum), they may make use of them without realising that this could cause them problems later on.
My python-idea is that if python is run with -W all then it should report uses of __builtins__ as identifiers.
-- Mark Summerfield, Qtrac Ltd., www.qtrac.eu
Python-ideas mailing list Pythonemail@example.com http://mail.python.org/mailman/listinfo/python-ideas