I’m all for asking permission (i.e. I don’t like the try
…except
method). However, the code gets a lot cleaner when it’s encapsulated in a method:
def get_at(array, index, default):
if index < 0: index += len(array)
if index < 0: raise IndexError('list index out of range')
return array[index] if index < len(a) else default
b = get_at(a, 4, 'sss')