variable scope

gonzlobo gonzlobo at gmail.com
Thu Jan 18 10:42:54 EST 2007


Greetings,
I've been using Python to successfully parse files. When the entire
program was smaller, the variable firstMsg worked fine, but now
doesn't because it's used in function PID_MinMax. I know it's a result
of variables and their scope.

I declare the variable 'firstMsg = 0' in the main loop, pass it to the
function 'PID_MinMax(firstMsg, PID)'. When the function increments the
variable, it doesn't pass it back to the main program. What am I doing
wrong?


---- major snippage) ---
firstMsg = 0
skipHeader = 13

pPIDs = ['0321'] # hundreds more
pLen = len(pPIDs)
pMsgNum = pLen * [0]
pMax = pLen * [0]
pMin = pLen * [10]
pLast = pLen * [0]


def PID_MinMax(firstMsg, PID):
    idx = pPIDs.index(PID)
    pMsgNum[idx] += 1
    # Need to have 2 samples to determine Delta
    if firstMsg != 0:
        tDelta = tCurrent - pLast[idx]
        if tDelta > pMax[idx]:
            pMax[idx] = tDelta
        if tDelta < pMin[idx]:
            pMin[idx] = tDelta
    elif firstMsg == 0:
        firstMsg = 1
    pLast[idx] = tCurrent
    print pMin, pMax
    return firstMsg


############## main ##############
bf_file = file('bf_data/sByteflightLog_wISS.txt', 'r')
for line in bf_file:
    # skip header
    if skipHeader != 0:
        skipHeader -= 1
    # skip footer
    elif line == '\n':
        break
    else:
         raw_msg = line.split()
         tCurrent = int(raw_msg[0], 16) * 0.0001
         PID = raw_msg[2]

         if PID in pPIDs:
             PID_MinMax(firstMsg, PID)



More information about the Python-list mailing list