user8471763
user8471763

Reputation:

Importing variables from another file in Python

I have declared a few variables and initialised them with some value in variables.py:

flag = 0
j = 1

I want to use those values in another file main_file.py:

import variables
if(flag == 0) :
   j = j+1

However I get the following error,

NameError: name 'flag' is not defined

How can i solve this problem?

Upvotes: 8

Views: 43636

Answers (3)

Mohamed Ali JAMAOUI
Mohamed Ali JAMAOUI

Reputation: 14699

You need to import the variables from the file. You can import all of them like this:

from variables import *
if(flag == 0) :
   j = j+1

Or reference a variable from the imported module like this variables.flag

import variables
if(variables.flag == 0) :
   j = j+1

Or import them one by one like this

from variables import flag, j
if(flag == 0) :
   j = j+1

The best way is to use variables.flag preserving the namespace variables because when your code grows large, you can always know that the flag variable is coming from the module variables. This also will enable you to use the same variable name flag within other modules like module2.flag

Upvotes: 1

Mike Scotty
Mike Scotty

Reputation: 10782

You can either use

import variables

and then access the vairables like this:

variables.flag
variables.j

or you can use:

from variables import flag, j

and then access the vaiables by just their name.

Important:

Please note that in the second case, you will be working with a copy of the variables, and modifying them in one module has no effect on the variables in the other module!

Upvotes: 9

DeathJack
DeathJack

Reputation: 615

Everything you've done is right except when using the variables.

In your main_file.py file:

if(variables.flag == 0) :
    variables.j = variables.j + 1

(Or)

Use the following header :

from variables import *

(Or)

from variables import flag, j

Replace all the references of flag and j (or any other variable you want to use from that file) with the prefix 'variables.'

Since this is just a copy of the variable, the values in the variables.py won't get affected if you modify them in main_file.py

Upvotes: 10

Related Questions