views:

109

answers:

3

Hi

I have a very rudimentary question.

Assume I call a function, e.g.,

def foo():
    x = 'hello world'

How do I get the function to return x in such a way that I can use it as the input for another function or use the variable within the body of a program?

When I use return and call the variable within another functions I get a NameError.

Thanks, S :-)

+3  A: 
>>> def foo():
    return 'hello world'

>>> x = foo()
>>> x
'hello world'
SilentGhost
+10  A: 
def foo():
    x = 'hello world'
    return x  # return 'hello world' would do, too

foo()
print x    # NameError - x is not defined outside the function

y = foo()
print y    # this works

x = foo()
print x    # this also works, and it's a completely different x than that inside
           # foo()

z = bar(x) # of course, now you can use x as you want

z = bar(foo()) # but you don't have to
Tim Pietzcker
you forgot a case for "return x in such a way that I can use it as the input for another function" which is easiest to do like this 'bar(foo())'
Evan Plaice
@Evan Plaice: Good point, thanks. I have edited my answer.
Tim Pietzcker
@Tim +1 sweet...
Evan Plaice
+1  A: 

You can use global statement and then achieve what you want without returning value from the function. For example you can do something like below:

def foo():
    global x 
    x = "hello world"

foo()
print x

The above code will print "hello world".

But please be warned that usage of "global" is not a good idea at all and it is better to avoid usage that is shown in my example.

Also check this related discussion on about usage of global statement in Python.

sateesh
Technically, this is a solution to Seafoid's question, but pythonically, it's the worst-case-scenario (as you already pointed out).
Tim Pietzcker