python之全局变量

http://www.cnblogs.com/phoebus0501/archive/2011/01/18/1938728.html

应该尽量避免使用全局变量, 因为:
1) 不同的模块都可以自由的访问全局变量,可能会导致全局变量的不可预知性。
对全局变量,如果程序员甲修改了_a的值,程序员乙同时也要使用_a,这时可能导致程序中的错误。这种错误是很难发现和更正的。
2) 全局变量降低了函数或模块之间的通用性,不同的函数或模块都要依赖于全局变量。
同样,全局变量降低了代码的可读性,阅读者可能并不知道调用的某个变量是全局变量。

但是某些时候,全局变量能够解决局部变量所难以解决的问题。事物要一分为二。

python中全局变量的使用:

1 声明法
  1) 在文件开头声明全局变量: VAR = 0 (将全局变量大写便于识别)
  2) 在具体函数中使用该变量时,需要事先声明 global VAR, 否则系统将该变量视为局部变量。

  VAR = 10 #声明全局变量

  def get_var() :
    global VAR #声明变量为global
    print VAR,
    VAR += 1

  if __name__ == ‘__main__‘ :
    for i in range(5):
    get_var()

  #Result:
  # 10 11 12 13 14

2 模块法(推荐)

1) 把全局变量定义在一个单独的模块中:

  #global.py
  GLOBAL_1 = 1
  GLOBAL_2 = 2
  GLOBAL_3 = ‘Hello World‘

2) 然后在另一个模块中导入全局变量定义模块,在新模块中使用全局变量:

  import globalValues

  def printGlobal():
  print(globalValues.GLOBAL_1)
  print(globalValues.GLOBAL_3)
  globalValues.GLOBAL_2 += 1 # modify values

if __name__ == ‘__main__‘:
  printGlobal()
  print(globalValues.GLOBAL_2)

  第二种方法,适用于不同文件之间的变量共享,而且一定程度上避免了开头所说的全局变量的弊端,推荐!

时间: 2024-11-08 19:23:58

python之全局变量的相关文章

转:Python之全局变量

应该尽量避免使用全局变量.不同的模块都可以自由的访问全局变量,可能会导致全局变量的不可预知性.对全局变量,如果程序员甲修改了_a的值,程序员乙同时也要使用_a,这时可能导致程序中的错误.这种错误是很难发现和更正的. 全局变量降低了函数或模块之间的通用性,不同的函数或模块都要依赖于全局变量.同样,全局变量降低了代码的可读性,阅读者可能并不知道调用的某个变量是全局变量. 但是某些时候,全局变量能够解决局部变量所难以解决的问题.事物要一分为二. python里面全局变量有两种灵活的用法: 1 声明法

python 引用全局变量之global

1.global在python中叫关键字,不叫命令 2.global的作用就是引用全局变量到局部作用域中来 3.如果全局变量中没有一个变量a,而函数中写了 globa a这样的语句,那么等于在全局变量中创建了一个变量a 4.代码举例: ######################################################################## a=10 def fun(): global a a = 20 fun() print(a) 总结:一般例子,在函数中

python函数(全局变量,局部变量,作用域,递归函数,高阶函数,匿名函数)

1.1函数 1.1.1什么是函数 函数就是程序实现模块化的基本单元,一般实现某一功能的集合.函数名:就相当于是程序代码集合的名称参数:就是函数运算时需要参与运算的值被称作为参数函数体:程序的某个功能,进行一系列的逻辑运算return 返回值:函数的返回值能表示函数的运行结果或运行状态. 1.1.2函数的作用 函数是组织好的,可重复使用的,用来实现单一,或者相关功能的代码. 函数能够提高应用的模块性,和代码的重复利用率 我们已近知道python提供了许多内置函数,比如print(),我们自已创建的

Python中全局变量的引用与修改之格式影响

先来看下面的代码及执行结果: a = 1 b = [2,3] def nums(): a = 2 b[0] = 0 print(a) print(b) print(a) print(b) nums() print(a) print(b) 结果: 1 [2, 3] 2 [0, 3] 1 [0, 3] 对上面结果的分析: 函数 nums() 中重新定义了一个变量 a ,这个 a 是局部变量,与外面的全局变量没有关系,而全局变量 列表 b 直接被引用过来进行修改了,同样是全局变量为什么会有差别呢? 因

python中全局变量和局部变量

例1: a = 100 #定义全局变量a def test1(): print(a) #此处a为全局变量 def test2(a):#此处a为局部变量 print(a)#此处a为局部变量 test1() #结果为100 test2(3) #结果为3 例2: 1 temperature = 0 2 3 def get_temperature(): 4 global temperature #在函数内部修改全局变量的值,要先用global声明全局变量. 5 temperature = 33 #若不用

(十六)python 3 全局变量局部变量

全局变量和局部变量 全局变量与局部变量两者的本质区别就是在于作用域. 用通俗的话来理解的话,全局变量是在整个py文件中声明,全局范围内都可以访问.局部变量是在某个函数中声明的,只能在该函数中调用它,如果试图在超出范围的地方调用,程序就爆掉了. 在子程序中定义的变量称为局部变量,只在子程序内部生效, 在程序一开始定义的变量称为全局变量 全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序. 当全局变量与局部变量同名时:在定义局部变量的子程序内,局部变量起作用,在其他地方全局变量起作用 gl

python函数 全局变量和局部变量

1 li1=[1,2,3,4,5] 2 str1='abc' 3 4 def func1(): 5 li1=[7,8,9] 6 str1='efg' 7 print(str1) 8 9 func1() 10 print(li1)#输出的结果为[1,2,3,4,5],并没有因为def函数改变 1 li1=[1,2,3,4,5] 2 str1='abc' 3 4 def func1(): 5 li1=[7,8,9] 6 str1='efg' 7 return li1 8 9 re=func1() 1

Python 全局变量扫盲

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

Python手记

字符串的拼接 1."+",如果是字符和数字相连,要使用str()函数对于数字进行字符转化: 2.join() 3.",",链接的两个字符串之间用空格做关联 4.占位符 tmp +=1 #print 'r'%tmp print("row num is: %s"%(tmp)) print('value is: %s; RowNum is: %s'%(cellValue,rowNo)) #多个占位 python的全局变量 第一种是def consts(