python全局变量

来源:http://andylin02.iteye.com/blog/841632

python全局变量

1. 函数是可以访问全部变量的

a = 9527

def modify() :
print a

if __name__ == ‘__main__’ :
modify()
执行结果,就是打印出 9527

2. 如果在函数里 对全局变量进行修改,就会报错

#!/usr/bin/env python
# -*- coding: utf-8 -*-

a = 9527

def modify() :
a += 1
print a

if __name__ == ‘__main__’ :
modify()

报错:
a += 1
UnboundLocalError: local variable ‘a’ referenced before assignment

3) 在函数里 可以用 global 来声明这个变量,避免报错

a = 9527

def modify() :
global a
a += 1
print a

if __name__ == ‘__main__’ :
modify()

打印出
9528

请参考:

http://www.krisd.org/?p=645

在函数内进行赋值操作时,会产生一个局部变量a,而等式右边又引用了这个未初始化的变量,因此产生了UnboundLocalError错误,如果要引用外部的变量,必须利用global关键字进行显式的声明

tags: 全局变量 
posted in Python by zhiwei

时间: 2024-09-30 00:06:04

python全局变量的相关文章

Python全局变量和局部变量

python中,对于变量作用域的规定有些不一样.在诸如C/C++.java等编程语言中,默认在函数的内部是可以直接访问在函数外定义的全局变量的,但是这一点在python中就会有问题,下面是一个例子. test.py: #!/usr/bin/python COUNT=1 def func(): COUNT = COUNT + +1 func() Python test.py,会运行报错: Traceback (most recent call last): File "test.py",

python全局变量的使用

如果要给全局变量在一个函数里赋值,必须使用global语句. global VarName的表达式会告诉Python, VarName是一个全局变量,这样Python就不会在局部命名空间里寻找这个变量了. globals()和locals()函数 根据调用地方的不同,globals()和locals()函数可被用来返回全局和局部命名空间里的名字. 如果在函数内部调用locals(),返回的是所有能在该函数里访问的命名. 如果在函数内部调用globals(),返回的是所有在该函数里能访问的全局名字

python 全局变量的理解(global关键字)

先看代码: 代码一: #!/usr/bin/python #coding:utf8 x = 20 def test(): print 'x= ',x test() 代码一执行结果: x = 20 我们在代码一的基础上稍加修改 代码二: x = 20 def test(): print 'x= ',x x = 2 print 'change x to ',x test() 代码二执行结果: x= Traceback (most recent call last): File "D:\Demo\te

python 全局变量与局部变量

一.引用 使用到的全局变量只是作为引用,不在函数中修改它的值的话,不需要加global关键字.如: #! /usr/bin/python a = 1 b = [2, 3] def func(): if a == 1: print("a: %d" %a) for i in range(4): if i in b: print("%d in list b" %i) else: print("%d not in list b" %i) if __nam

Python 全局变量

报错信息:UnboundLocalError: local variable referenced before assignment 在函数内部修改全局变量时报错. 因为:在python里,如果在函数内部试图去修改一个全局变量,那么实际上的操作是 Python会创建一个新的名字一模一样的局部变量,并且在函数内部屏蔽(shadow)掉这个全局变量(为了保护),但是出了这个函数并不改变全局变量的值. 解决方法:代码如下所示. epoch = 0 def Mnist(x1, x2, x3, x4,

Python 全局变量扫盲

Python没有真正的全局变量,在Java和C++中,全局变量则是程序级别的,站在它们的角度,那么python就是没有全局变量,而在python的角度,是有全局变量,python提供global关键字,可以修改全局变量,在python中的全局变量只是针对当前python文件/模块所定义的,python文件就是一个模块,独立的命名空间,模块内定义的变量就只属于该命名空间,so,python没有真正的全局变量,全局变量也只是文件级别. 所以Python的全局变量是相对而言的 例子:test.py a

python全局变量与局部变量

了解全局变量和局部变量之前,我们先来了解一下作用域 a = 10 def func(): b = 20 def inner(): c = 30 以上面这个程序为例:打印a,b,c 可以看到只有a打印 10 ,b和c都报错,这就是作用域的问题. 我们把新创建的一个.py文件看做事一个模块,在模块内定义的变量,如a,就是这个模块的全局变量,作用于全局,不论在哪都可以调用, 但是b和c 是定义在函数内部的,我们叫做局部变量,只能作用在函数内部. 我们在看一个问题 func和inner函数可以调用变量a

PYTHON 全局变量和局部变量

#局部变量,只能调用函数体内的变量 def fun(): a = 234 print(a) #全局变量,在函数体外声明,在函数体内都可调用 b = 'gyc' def fun(): a = 234 print(a,b) # 在局部内修改全局变量 b = 789 def fun(): a = 234 global b #global 表示全局b赋值为789 b = 789 print(a,b)

Python 局部变量与全局变量

本来以为 局部变量就是在函数/def/class/lambda内部的变量,全局变量就是在之前这些之外的变量.但是,再一次学习Python atm 中应用时发现了一次特例(意外) 字典中 在函数内部改变 其部分值之后,在函数外打印字典,字典的值竟然改变了. x = {"w":1,"k":2} def a(x): x["w"] = 123 x = {"w":999,"k":3433} return x def