Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #28967
| Date | 2012-09-12 07:52 -0600 |
|---|---|
| From | Michael Torrie <torriem@gmail.com> |
| Subject | Re: avoid the redefinition of a function |
| References | <CAOuJsMnLf4P9p_rZ4p1W-SndkSOV2WK_v5j1AET085LZ6bdavQ@mail.gmail.com> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.563.1347459014.27098.python-list@python.org> (permalink) |
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()
Back to comp.lang.python | Previous | Next | Find similar | Unroll thread
Re: avoid the redefinition of a function Michael Torrie <torriem@gmail.com> - 2012-09-12 07:52 -0600
csiph-web