python学习之变量

记录平时学习中遇到相关类问题


全局变量

实例:

count = 0
def Fuc(count):
    print count
    count += 1

for i in range(0, 10):
    Fuc(count)

上面结果:0 0 0 0 0 0 0 0 0 0 (每个0为一行)
解决:利用全局变量

global a
a = 3

def Fuc():
    global a
    print a
    a = a + 1
if __name__ == "__main__":
  global a
    for i in range(10):
        Fuc()print 'hello'
    print a

输出: 3 4 5 6 7 8 9 10 11 12 hello 13
参考博客:全局变量详解
全局变量降低了模块和函数之间的通用性;所以,在以后的编程过程中,应尽量避免使用全局变量。

使用

在声明全局变量的时候,都喜欢把全局变量的名称定义为大写.我们应尽量不用全局变量,比如当一个模块中的两个函数要用同一个变量时,我们可以尝试把这两个函数写在一个类中,而该变量定义

成类变量。如果非要用全局变量,建议把它们全部定义在一个类中,通过“类名.类变量名”来使用它们,这样OK了,根本不用什么globle
* 法1
为了便于代码管理,将全局变量统一放到一个模块中,然后在使用全局变量的时候,导入全局变量模块,通过这种方法来进行使用全局变量

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

使用:一个模块中导入全局变量定义模块,在新模块中使用全局变量

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) 
  • 法2
    直接在模块中定义全局变量,然后在函数中直接使用就ok了。但是在使用全局变量的时候,必须在函数中使用global关键字进行标识
CONSTANT = 0  

def modifyGlobal():  
    global CONSTANT  
    print(CONSTANT)  
    CONSTANT += 1  

if __name__ == '__main__':  
    modifyGlobal()  
    print(CONSTANT)  
  • 法3
    使用列表实现功能
a = [3]

def Fuc():
    print a[0]
    a[0] = a[0] + 1
if __name__ == "__main__":
    global a
    for i in range(10):
        Fuc()
    print 'hello'
    print a[0]

类里面全局变量

class Test:
    def __init__(self, name='testA'):
        self.x = 'age'
        self.name = name
        self.ex()  # 加上这个
        # self.start()

    def ex(self):
        global oo
        oo = 'this is test'

    def start(self):
        print oo


t = Test()
t.start()

或者直接使用self.oo

class  Test:
  def __init__(self,name='testA'):
    self.x = 'age'
    self.name = name
    self.ex()
    self.start()
  def ex(self):
    self.oo = 'this is test'
  def start(self):
    print self.oo

t=Test()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值