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)

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

3. 使用类变量

1) 定义全局变量为类变量 var = 10:

2) 在类方法中使用类变量 self.var

class test_global():

var = 10      #声明类变量

def get_var(self): #定义类方法,使用类变量

print self.var,

self.var += 1

if __name__ == '__main__' :

obj = test_global()

for i in range(5):

obj.get_var()

#Result: 10 11 12 13 14

python类定义全局变量_python之全局变量相关推荐

  1. python类定义变量_python类变量与__init__声明变量的区别

    类变量:可在类的所有实例之间共享的变量 实例类对象:类的实例是调用类对象来创建的.如:par = Parent(),par就是类Parent的一个实例类对象. 实例变量(成员变量):同一个类对象可以创 ...

  2. python类属性初始化_Python类定义、属性、初始化和析构

    类的定义,属性和方法概念 方法中self的作用和意义 初始化( __init__ ) 和 析构方法( __del__ ) 类的定义 class 类名 实例 实例名 = 类名() 一个"实例& ...

  3. python类和对象_Python类和对象

    python类和对象 Python is an object-oriented programming language. Python Classes and Objects are the cor ...

  4. python类继承实例_Python实现类继承实例

    Python是一种解释型.面向对象.动态数据类型的高级程序设计语言,本文就举一例Python类继承的实例. 实例代码如下: #! /usr/bin/python # Filename: inherit ...

  5. PYTHON 类定义,属性,初始化

    文章目录 PYTHON 类定义,属性,初始化 类定义 类的私有属性 类方法 类的初始化和析构 初始化 析构 PYTHON 类定义,属性,初始化 为了代码的编写方便简洁,引入了类的定义: 一般,使用 c ...

  6. python类定义的讲解_python类定义的讲解

    Python中的类属性和对象属性的区别详解 类属性: class Employee(object): emCount=0 def __init__(self,name,salary): self.na ...

  7. python类的命名空间_Python之关于类变量的两种赋值区别详解

    我就废话不多说了,还是直接看代码吧! # -*- coding:utf-8 -*- #面试题,写一个方法,将一行字符串中所有的单词数量统计出来 class Person(object): TAG = ...

  8. python 类-python类定义的讲解

    一.类定义: class <类名>: <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性.如果直接使用类名修改其属性,那么将直接影响到已经实例 ...

  9. python中定义数据结构_Python中的数据结构—简介

    python中定义数据结构 You have multiples algorithms, the steps of which require fetching the smallest value ...

  10. python类定义中__init__()_转:python学习——类中为什么要定义__init__()方法

    学习Python的类,一直不太理解为什么一定要定义init()方法,现在简要谈一下自己的理解吧. 1.不用init()方法定义类 定义一个矩形的类,目的是求周长和面积. 1 classRectangl ...

最新文章

  1. 继续- 管理百人研发团队的烦恼(下)
  2. (原创)VS2017 C# 运行 Javasrcipt RSA 加密用户名登录 Java开发的服务器
  3. Pandas数据探索分析,分享两个神器!
  4. java使用jeids实现redis2.6的list操作(4)
  5. core identity mysql_Microsoft.AspNetCore.Identity 使用 mysql 报错处理
  6. SwipeRefreshLayout官方推荐下拉刷新
  7. 工业发展 安全护航 2021年工业互联网安全发展峰会成功召开
  8. mySQL 建表约束
  9. (三)数据结构与算法-队列
  10. 机器学习项目完整案例:预测区域的房价中位数
  11. 在Sublime Text 2下面开发Sass
  12. Linux中级之keepalived配置
  13. [我的阿里云服务器] —— 安装LAMP
  14. Pem私钥pkcs1和pkcs8之间互转
  15. ROS2系列知识【5】:从海龟教程开始【1】
  16. c++ 求四边形面积和周长_C++几何图形面积周长计算
  17. c语言 'max' : undeclared identifier,c语言中undeclared identifier是什么意思?
  18. Vi文本编辑器的使用方法
  19. python 例子 银行_Python3实现简单的银行账户登录系统实例
  20. 安装操作系统的方法?

热门文章

  1. 未能加载程序集或它的一个依赖项_英伟达发布kaolin:一个用于加速3D深度学习研究的PyTorch库...
  2. 全局统一返回结果包装信息
  3. C++ pthread
  4. 用c#输出正九九乘法表_用C#写九九乘法表
  5. 十大经典排序算法之选择排序及其优化
  6. Java实现图片转PDF
  7. LeetCode 18 四数之和
  8. Windows——Modern Standby(现代待机) S0改Suspend to RAM(待机到内存)S3睡眠解决方案(以机械革命F1 i5-11300H为例)
  9. Prefix Sum Primes
  10. android触摸事件透传,Android中父View穿透子View响应长按事件