Names that should be avoided are keywords (which will give you an error, so they are easy to notice) and inline elements that will be covertly masked. Here is a code snippet for checking bad names:
from keyword import kwlist def bad_name(name): return name in dir(__builtins__) + kwlist
... and here is the list (for Python 3.3):
Built-in functions, types, etc.
abs all any ascii bin bool bytearray bytes callable chr classmethod compile complex copyright credits delattr dict dir divmod enumerate eval exec exit filter float format frozenset getattr globals hasattr hash help hex id input int isinstance issubclass iter len license list locals map max memoryview min next object oct open ord pow print property quit range repr reversed round set setattr slice sorted staticmethod str sum super tuple type vars zip
Everything that CamelCase contains (for example, built-in exceptions) or begins with double underscores is excluded from the list above, since you should not use it anyway.
Keywords
False None True and as assert break class continue def del elif else except finally for from global if import in is lambda nonlocal not or pass raise return try while with yield
source share