Python – How to initialize variables to None/Undefined and compare to other variables in Python


Basically I have some variables that I don't want to preinitialize:

originalTime = None
recentTime = None
postTime = None

def DoSomething ( ) :
    if originalTime == None or (postTime - recentTime).seconds > 5 :

I get compile error on the if:

UnboundLocalError: local variable 'originalTime' referenced before assignment

As you can see, all the variables have different relationship that either has to be set right (time, time + 5, etc) or None at all, but I don't wanna set them to precalculated values when just declaring them to None is easier.

Any ideas?

Best Solution

I need to correct Jarret Hardie, and since I don't have enough rep to comment.

The global scope is not an issue. Python will automatically look up variable names in enclosing scopes. The only issue is when you want to change the value. If you simply redefine the variable, Python will create a new local variable, unless you use the global keyword. So

originalTime = None

def doSomething():
  if originalTime:
    print "originalTime is not None and does not evaluate to False"
    print "originalTime is None or evaluates to False"

def doSomethingElse():
  originalTime = True

def doSomethingCompletelyDifferent()
  global originalTime
  originalTime = True


Should output:

originalTime is None or evaluates to False
originalTime is None or evaluates to False
originalTime is not None and does not evaluate to False

I second his warning that this is bad design.