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