Python大盘点之全局变量、局部变量、类变量、实例变量(简单版)

1、前沿

相信同学们一定懵逼过,那是,不懵逼就不正常了,现在由我为了大家在轻松的氛围下逐个说明 标题中所述的 【名词】

 

2、定义

            a、全局变量:在模块内、在所有函数外面、在class外面,这就是全局变量。

            b、局部变量:在函数内、在class的方法(构造、类方法、静态方法、实例方法)内(变量未加self修饰),这就是局部变量

            c、 静态变量(类变量):在class内的,但不在class的方法内的,这就是静态变量

            d、 实例变量:在class的方法内的,用self修饰的变量,这就是实例变量

 

3、看完定义,同学们又懵逼一次了……………………我裤裆扯了…………好,下面写一个代码的例子(基于python版本2.7.11)

             a、【全局变量】与【局部变量】

关于global:对于Python2.x而言,对于一个全局变量,你的函数里如果只使用到了它的值,而没有对其赋值(指a = XXX这种写法)的话,就不需要声明global,相反,如果你对其赋值的话,那么你就需要声明global,因为声明了global的话,就表示你是在向一个全局变量赋值,而不是在新建一个局部变量并给它赋值。

全局变量与局部变量同名:如果局部变量与全局变量同名,那么方法或者函数中将优先使用的是局部变量,而不是使用全局变量(命名空间的知识点)
 

<———-注意——>下方的例子仅仅是作为展示用的,在实际工作中:变量名、函数名一定要有实际意义

#coding:utf-8

ahead = 'HelloWorld' #ahead是全局变量
showList = []        #showList也是全局变量

def printAhead():
    print ahead      #因为在该函数中没有叫ahead的局部变量,所以这里实际就是调用了全局变量ahead

def printOther():
    city = 'beijing'    #city是局部变量
    print city + ahead  #局部变量 与 全局变量

def printList():
    global showList    #global代表引用全局变量
                    
    showList.append(1)
    showList.append(2)
    print showList

printAhead()
printOther()
printList()

输出结果:

HelloWorld
beijingHelloWorld
[1, 2]

 

………………………………………………………人肉分割线…………………………………………………………

 

           b、静态变量(类变量)与实例变量, 我捎带又在class的方法中展示了局部变量,哈哈

class Person(object):
    TAG = "Person" #静态变量,类变量
    def __init__(self, name):           #self代表当前的实例对象(简单的说一下,其实都是引用哈)
        print Person.TAG        #这里调用了类变量
        self.personName = name  #personName是实例变量 (简单说就是因为self修饰在前,哈哈)

    def printName(self):
        group = "BeiJing_"      #group是局部变量
        print group + self.personName  # 局部变量 与 实例变量

if __name__ == "__main__":
    p = Person("WangYuanWai")
    p.printName()

输出结果:

Person
BeiJing_WangYuanWai

 

4、再谈同名问题(大哥,命名规范点,虽然不会有这样的事,但是你要知道同名的后果,因为不是你一个人在在代码

a、如果全局变量与局部变量同名,如果你在没有引用global,那么方法中将优先使用局部变量,而不是使用全局变量

firstValue = "Hello World"

def printStr():
    firstValue = "hi man"

    print firstValue  #注意:这里的firstValue其实调用的是局部变量firstValue,在方法中直接覆盖掉全局变量

 

 

 

 

 

    原文作者:叫我王员外就行
    原文地址: https://blog.csdn.net/cadi2011/article/details/52457754
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞