在函数中使用全局变量

如何在函数中创建或使用全局变量?
如果我在一个函数中创建一个全局变量,我如何在另一个函数中使用这个全局变量? 是否需要将全局变量存储在需要其访问的函数的局部变量中?

2个回答

你可以在其他函数中使用全局变量,方法是在赋值给它的每个函数中将其声明为全局变量:

globvar = 0
def set_globvar_to_one():
    global globvar    # Needed to modify global copy of globvar
    globvar = 1
def print_globvar():
    print(globvar)     # No need for global declaration to read value of globvar

set_globvar_to_one()
print_globvar()       # Prints 1

我想这是因为,由于全局变量不稳,Python 要通过要求全局关键字来确保程序员真正知道自己在干什么。

Python 使用一种简单的启发式方法来决定从哪个作用域加载变量,局部变量和全局变量之间的变量。 如果变量名出现在赋值的左侧,但没有引入为全局变量,则假定它是局部变量。 如果它没有出现在赋值的左侧,则假定它是全局的。

>>> import dis>>> def foo():...     global bar...     baz = 5...     print bar...     print baz...     print quux... >>> dis.disassemble(foo.func_code)
  3           0 LOAD_CONST               1 (5)
              3 STORE_FAST               0 (baz)

  4           6 LOAD_GLOBAL              0 (bar)
              9 PRINT_ITEM          
             10 PRINT_NEWLINE       

  5          11 LOAD_FAST                0 (baz)
             14 PRINT_ITEM          
             15 PRINT_NEWLINE       

  6          16 LOAD_GLOBAL              1 (quux)
             19 PRINT_ITEM          
             20 PRINT_NEWLINE       
             21 LOAD_CONST               0 (None)
             24 RETURN_VALUE        >>> 

看看 foo()中出现在赋值左侧的 baz 是如何成为唯一的 LOAD_FAST变量的。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

3
全局变量与局部变量同名,函数内部调用的是局部变量还是全局变量?
1
Linux fork后的子进程的情况?
1
基于keras写的模型中自定义的函数(如损失函数)如何保存到模型中?
9
java主函数里面对a赋值了,另一个函数里面为什么还是全局变量a的初始值?
1
安卓开发中,我在Spinner的onItemSelected函数里访问全局变量程序就会CrashHandler闪退
3
(前端js问题)在函数中修改全局变量
3
js全局变量在回调函数中赋值后,无法正常取得
1
rror C2084: 函数“Student::~Student(void)”已有主体 1> : 参见“{dtor}”的前一个定义
3
ajax请求后台阻塞问题
2
我小白拼凑一程序,VC++控制台程序用API函数与三菱PLC串口通信,但写不进读不出求大神指点
1
这是职工管理系统的源代码,问题主要是无法以正确格式输出文件内容和修改函数不起作用,希望得到指导。
1
EXTJS中ajax请求回调函数中如何跳转页面?
1
如何理解归并排序中的递归使得两个有序数组有序再按比较首元素合并?
2
想请教一下全局变量在递归中是怎么样的
1
萌新学生,在线求大佬解答,c语言全局变量二维数组在主函数输入后,数组还是为零
3
关于js全局变量无法定义的问题
1
新手请教一下c语言变量定义的问题
0
VS 句柄问题,为什么句柄类型符号写入后还是黑色的
1
关于linux的.so入口函数
3
初学C语言,为什么这个x值是全局变量的1,而不是main函数里的5?