[EMAIL PROTECTED] said unto the world upon 25/06/2005 01:41:
> Wait... so this means it is impossible to write a function that
> increments an integer without turning the integer into a list?
> 

Well, one of these options will probably suit:

 >>> def increment_counter(data):
...     data += 1
...     return data
...
 >>> counter = 0
 >>> counter = increment_counter(counter)
 >>> counter
1

Or, if you only care about one counter, don't like the 
return/assignment form, and don't mind all the cool kids frowning on 
the use of global:


 >>> counter = 0
 >>> def increment_counter():
...     global counter
...     counter += 1
...     
 >>> counter
0
 >>> increment_counter()
 >>> counter
1
 >>>


Nicest might be using a class, where you keep a clean namespace, and 
don't have the return/assignment form:

 >>> class My_class(object):
...     def __init__(self):
...             self.counter = 0
...     def increment_counter(self):
...             self.counter += 1
...             
 >>> my_object = My_class()
 >>> my_object.counter
0
 >>> my_object.increment_counter()
 >>> my_object.counter
1
 >>>

This also lets you have multiple independent counters:

 >>> my_other_object = My_class()
 >>> my_other_object.counter
0
 >>> my_other_object.increment_counter()
 >>> my_other_object.increment_counter()
 >>> my_other_object.counter
2
 >>> my_object.counter
1
 >>>

Best,

Brian vdB


-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to