Steven D'Aprano wrote:

> Ron Adam wrote:
> 
>> Why would you want to use None as an integer value?
>>
>> If a value isn't established yet, then do you need the name defined? 
>> Wouldn't it be better to wait until you need the name then give it a 
>> value?
> 
> 
> Er, maybe I'm misunderstanding something here, but surely the most 
> obvious case is for default and special function arguments:
> 
> def count_records(record_obj, start=0, end=None):
>     if end == None:
>         end = len(record_obj)
>     if start == None:  # this is not the default!
>         # start at the current position
>         start = record_obj.current
>     n = 0
>     for rec in record_obj.data[start:end]:
>         if not rec.isblank():
>             n += 1
>     return n
> 
> which you call with:
> 
> # current position to end
> count_records(myRecords, None)
> # start to end
> count_records(myRecords)
> # start to current position
> count_records(myRecords, end=myRecords.current)


You have three possible outcomes,
    count all
    count range
    count using current index
        count range from beginning to current
        count range from current to end


The most consistent way to do this would be:


def count_records(record_obj, start=0, end=len(record_obj)):
     n = 0
     for rec in record_obj.data[start:end]:
         if not rec.isblank():
             n += 1
     return n


# current position to end
count_records(myRecords, myRecords.current)

# start to end
count_records(myRecords)

# start to current position
count_records(myRecords, end=myRecords.current)


Cheers,
Ron



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

Reply via email to