全局变量与类似配置文件的模块文件

# -*- coding: cp936 -*-
#python 27
#xiaodeng
#全局变量
#重点问题:
1)函数调用的先后顺序导致结果不同
2)使用类似于配置文件的模块文件控制全局变量和控制变量的修改等操作
    在文件之间进行通信的最好办法是通过调用函数,传递参数,然后得到返回值
    虽然一定程度上,会增加代码量,但是可读性和维护性上会变得非常友好
    当人们在阅读第一个文件时,就会看到这个函数,就知道这是一个接口(接入点),并知道将改变变量x的值
    当然,我们依然还是要最小化的修改文件之间的变量,尽可能的保持变量的稳定,不随便修改变量的值




#案例
x=100
def func1():
    global x
    x=88
    print x

def func2():
    global x
    x=77
    print x


#调用顺序不同其结果不同
#x的值取决于函数的调用先后顺序,因为这2个函数是耦合在一起的
print x
func1()
func2()
print x


#结论:
#全局变量使得程序更难以理解和使用,所以尽可能的控制使用全局变量
    eg:
    #test.py
    name='xiaodeng'

    import test
    print test.name
    
#一些程序情况下,会委任一个单一的模块文件去定义所需要使用到的所有全局变量--->变量名封装思想
#但是这里又会出现一个问题,导致文件之间的依赖性增强,可以考虑在源码中添加备注。
#目前最佳办法:
    eg:
    #fisrt.py
    x=99
    def setX(new):
        global x
        x=new

    #test.py
    import fisrt
    fisrt.setX(88)
    print x
    #案例说明:
    在文件之间进行通信的最好办法是通过调用函数,传递参数,然后得到返回值
    虽然一定程度上,会增加代码量,但是可读性和维护性上会变得非常友好
    当人们在阅读第一个文件时,就会看到这个函数,就知道这是一个接口(接入点),并知道将改变变量x的值
    当然,我们依然还是要最小化的修改文件之间的变量,尽可能的保持变量的稳定,不随便修改变量的值
    
    

 

posted @ 2015-10-20 18:00  Xiao|Deng  阅读(640)  评论(0编辑  收藏  举报