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