Declaring A Function Argument As Global?

Tim Daneliuk tundra at
Thu Jan 16 18:20:08 CET 2003

I want to be able to write a generic list handling function which slices
a list, but I don't want to have to return the modified list
to do so.  In other words, I purposely want the function to have
a side-effect which modifies the list handed to it. For example:

def lhandler(list):
	list = list[1:]

mylist = [1,2,3]

lhandler(mylist) doesn't change mylist (because the assignment creates
a local variable by Python scoping rules), but that's exactly what
I want it to do.  So far, I've only come up with two solutions:

          1) return the modified value - for various reasons, this is
             an ugly solution in my application.

          2) Pass the *name* of the list into the function and do something
             truly ugly like:

                 globals()[name] = globals()[name][1:]   # Yuk!

Is there another way?
Tim Daneliuk
tundra at

More information about the Python-list mailing list