You need to declare _expensiveObject as global inside your function. Whenever you assign something to a variable that resides in the global scope inside a function, you need to declare it as global at the beginning of the function. So your function should look like this
def ExpensiveObject(): global _expensiveObject if not(_expensiveObject): _expensiveObject = "A VERY Expensive object" return _expensiveObject The documentation will no doubtedly explain it better than I have -Farshid -- http://mail.python.org/mailman/listinfo/python-list