最近在做实验时发现个问题,我想在一个模块中调用另一个模块的变量,首先想到了用return
函数返回值的方法将变量作为返回值并将该变量设为全局变量,可在执行时就是报错;
综合借鉴了下其他博客和评论的方法,把需要全局使用的变量定义在一个全局变量模块里,当我
在调用其他模块之前先调用一下全局变量模块,这样就不报错了同时也可以把其他模块的变量值返回
给我
首先定义一个全局变量模块
# global.py
class global_variable:
def variable_name():
global name
# called.py
class called_module:
def called_function():
name = input('please input your variable name:')
return name
# main.py
from global import global_variable
from called import called_module
global_variable.variable_name()
res = called_module.called_function
print(res)
这样主文件输出的结果就是被调用模块的变量值了,同样也可以返回一个数据结构;
总结: 1. 全局定义变量可在函数内外定义均可;
2. 全局变量定义只在其之下起作用,对其上部无效;
3. 全局变量定义后并非一直不变,如果在其后仍有变量重新定义,变量值仍会改变;
4. 定义在函数中的全局变量,如果函数没有被调用全局变量无效。
5. 在一个模块内定义全局变量只能在本模块内使用不能再其他模块内使用;
6. 跨模块使用全局变量需要在一个另一个模块中定义全局变量并被调用。
参考文章:http://bbs.chinaunix.net/thread-943223-1-1.html
http://www.cnblogs.com/itech/archive/2011/01/27/1945501.html
转载于:https://blog.51cto.com/51enjoy/1735307