我们不能通过在python中使用全局变量来在三个不同的模块中使用单个变量

时间:2018-04-10 00:49:45

标签: python global-variables

我在编程方面很擅长。 我有三个文件, 第一个是“main.python”, 第二个是“driver.python”, 第三个是“global_var.python”,它仅用于初始化全局变量。

main.python

import global_var
import driver
global_var.init()
driver.fun()
print(shinchan)

driver.python

import global_var
def fun():
   shinchan ="hello python"

global_var.python

def init():
   global shinchan

运行此操作后,我收到错误

  File "main.py", line 13, in <module>
  print(shinchan)
  NameError: name 'shinchan' is not defined

据我所知,在driver.python中,python一共创建了一个新变量“shinchan”,它与“global_var.python”中定义的全局变量“shinchan”无关,我正在尝试实现。

我们不能在这三个不同的文件中使用相同的变量。

请帮帮我。

1 个答案:

答案 0 :(得分:0)

访问变量

如果您想访问shinchan中的main.py,则需要更改导入语句或将其作为global_var的属性引用。

因此要么将导入更改为

from global_var import shinchan

或将通话更改为

print(global_var.shinchan)

您可能不希望在访问global_var.init()之前致电global_var,所以您可能想要做的是:

global_var.py

shinchan = '' # or whatever you want it to be initially

设置变量

global_var.shinchan = 'hello world'

但你可能不想这样做。全局变量快速混乱,这就是为什么你应该不惜一切代价避免它们。

你可能想要这样做

如果您想从driver.py获取信息并将其存储在main.py中的变量中,您应该从函数中获取所需的数据。所以像这样:

main.py

import driver
shinchan = 'hi'
shinchan = driver.getNewShinchan()

driver.py

def getNewShinchan():
    return 'hello world'