Indeed, I think one very useful rule for naming variables is "the length of the name should be proportional to the scope". If you're iterating through a list of objects representing unfilled orders, it's OK to do this:
for uo in unfilledOrdersIterator():
oid = uo.id
status = uo.status
email = uo.customer.email
sendEmail(email, "Your order %s is in status %s" % (oid, status))
But if there's a 200-line method that does all sorts of other things with a single unfilled order, then calling the order "uo" is probably a bad idea.