> I have a reference to certain objects. What is the most pythonic way to > test for valid reference: > > if obj: > > if None!=obs: > > if obj is not None:
The third way is the most precise way. It is often used in combination with default arguments. def __init__(self, amount = None): if amount is not None: self.amount = amount else: self.amount = self.calc_amount() However, the first way is shorter and more concise. It really depends on what obj is supposed to be and where you get obj from. If it is a database and obj is an instance: obj = db.get("sometable", id = 33) (assuming db.get returns None if the object isn't found) Then "if obj:" clearly is the right test. In general, I think "If obj:" is the right answer, except when dealing with default arguments. And you must be aware that some objects, like 0, [] or {} evaluate to False -- it is possible that that could create some subtle bugs. -- mvh Björn -- http://mail.python.org/mailman/listinfo/python-list