On 27/08/13 18:58, leam hall wrote:

def append_customer(line_list):
         global customers
         cust = line_list[0]     // list with Customer info in [0]
         cust = clean_word(cust)  // Trims white space

         if len(cust) and cust not in customers:
                 host_list[cust] = {}
                 customers.append(cust)

In Python global only applies to the local file.
Thus customers needs to be at the global level in
functions.py.

But since its a bad use of globals it would be better to just get the function to return the value and do the append in the top level file...

BTW the line

>                  host_list[cust] = {}

Makes no sense since you are adding an empty dictionary to a variable that doesn't exist so you should get an error. I assume you have simplified the code somewhat?

In the calling file:

import functions
import sys

customers = []
.
.
for line in input_file:
     line = line.strip()
     if not len(line):
         continue
     line_list = line.split(',')
     functions.append_customer(line_list)

       customers.append(functions.get_customer(line_list, customers))

Avoids any need for globals.

Personally I'd move the line split into the function so your loop looks like:

for line in input_file:
     line = line.strip()
     if line:
        customers.append(functions.get_customer(line_list, customers))

Alternatively I'd put the customers list into a module called customer
and move the customer functions into that module. And then it looks
like I might have a Customer class emerging... And maybe the code above would become a class method:
   Customer.readFromFile(aFile) -> [cust1, cust2, ...]


Just a thought...

--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to