Confused: Newbie Function Calls

fuglyducky fuglyducky at gmail.com
Wed Aug 11 12:39:58 EDT 2010


On Aug 11, 9:31 am, Pinku Surana <sura... at gmail.com> wrote:
> On Aug 11, 12:07 pm, fuglyducky <fuglydu... at gmail.com> wrote:
>
>
>
> > I am a complete newbie to Python (and programming in general) and I
> > have no idea what I'm missing. Below is a script that I am trying to
> > work with and I cannot get it to work. When I call the final print
> > function, nothing prints. However, if I print within the individual
> > functions, I get the appropriate printout.
>
> > Am I missing something??? Thanks in advance!!!!
>
> > ################################################
> > # Global variable
> > sample_string = ""
>
> > def gen_header(sample_string):
> >     HEADER = """
> >     mymultilinestringhere
> >     """
>
> >     sample_string += HEADER
> >     return sample_string
>
> > def gen_nia(sample_string):
> >     NIA = """
> >     anothermultilinestringhere
> >     """
>
> >     sample_string += NIA
> >     return sample_string
>
> > gen_header(sample_string)
> > gen_nia(sample_string)
>
> > print(sample_string)
>
> There are 2 problems with your program.
>
> (1) If you want to use a global variable in a function, you have to
> add the line "global sample_string" to the beginning of that
> function.
>
> (2) Once you do (1), you will get an error because you've got
> sample_string as a global and a function parameter. Which one do you
> want to use in the function? You should change the name of the
> parameter to "sample" to solve that confusion.
>
> Here's the result, which works for me:
>
> sample_string = ""
> def gen_header(sample):
>     global sample_string
>     HEADER = """
>     mymultilinestringhere
>     """
>     sample_string = sample + HEADER
>     return sample_string
> def gen_nia(sample):
>     global sample_string
>     NIA = """
>     anothermultilinestringhere
>     """
>     sample_string = sample + NIA
>     return sample_string
> gen_header(sample_string)
> gen_nia(sample_string)
> print(sample_string)

Thanks! That did the trick.

I am a bit confused though. I tried to follow a sample in a book
(which works) where I didn't have to 1) pass the global variable as a
parameter into the function, 2) did not have to define the global
variable within the function. I apologize if this is a super stupid
question but if it is global, why do I have to pass it into the
function? Shouldn't the global variable be accessible from anywhere???



More information about the Python-list mailing list