Nicolas Fonteyne
Nicolas Fonteyne

Reputation: 174

How do I make a variable created inside a function become global?

I have a function in a program that I`m working at and I named a variable inside this function and I wanted to make it global. For example:

def test():
   a = 1
   return a

test()

print (a)

And I just can`t access "a" because it keeps saying that a is not defined.

Any help would be great, thanks.

Upvotes: 3

Views: 578

Answers (3)

khajvah
khajvah

Reputation: 5090

As Vaibhav Mule answered, you can create a global variable inside a function but the question is why would you?

First of all, you should be careful with using any kind of global variable, as it might be considered as a bad practice for this. Creating a global from a function is even worse. It will make the code extremely unreadable and hard to understand. Imagine, you are reading the code where some random a is used. You first have to find where that thing was created, and then try to find out what happens to it during the program execution. If the code is not small, you will be doomed.

So the answer is to your question is simply use global a before assignment but you shouldn't.

BTW, If you want c++'s static variable like feature, check this question out.

Upvotes: 2

gabhijit
gabhijit

Reputation: 3585

First, it is important to ask 'why' would one want that? Essentially what a function returns is a 'local computation' (normally). Having said so - if I have to use return 'value' of a function in a 'global scope', it's simply easier to 'assign it to a global variable. For example in your case

def test():
    a = 1    # valid this 'a' is local 
    return a

a = test() # valid this 'a' is global
print(a)

Still, it's important to ask 'why' would I want to do that, normally?

Upvotes: 1

Vaibhav Mule
Vaibhav Mule

Reputation: 5126

I have made some changes in your function.

def test():
    # Here I'm making a variable as Global
    global a
    a = 1
    return a

Now if you do

print (a)

it outputs

1

Upvotes: 3

Related Questions