On 09/12/2012 06:56 AM, Jabba Laci wrote: > I have an installer script that contains lots of little functions. It > has an interactive menu and the corresponding function is called. Over > time it grew long and when I want to add a new function, I should give > a unique name to that function. However, Python allows the > redefinition of functions: > > #!/usr/bin/env python > > def step_1(): > print 1 > > def step_1(): > print 2 > > step_1() > > This will call the 2nd function. Now my functions are called step_ID > (like step_27(), step_28(), etc.). How to avoid the danger of > redefinition? Now, when I write a new function, I search for its name > to see if it's unique but there must be a better way.
I don't understand the other poster's suggestion to your problem. I have looked at your script and think I understand how you are using them. Keep in mind that functions in python are just objects. So rather than define them as step_##() and then search the globals list for them, why not just define them as descriptive functions (for example, "install_java") and then put them into a list. For example: def install_java(): pass def install_tomcat(): pass steps = [install_java, install_tomcat, etc] # or steps.append(install_java) if steps already has stuff in it, etc # then: for step in steps: step() -- http://mail.python.org/mailman/listinfo/python-list