Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #28967

Re: avoid the redefinition of a function

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)

Show all headers | View raw


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


Thread

Re: avoid the redefinition of a function Michael Torrie <torriem@gmail.com> - 2012-09-12 07:52 -0600

csiph-web