Python之全局变量、局部变量、类变量、实例变量的解读

Python 综合 专栏收录该内容
37 篇文章 4 订阅

前言

    全局变量、局部变量、类变量、实例变量,必须要分清,这是Python基础中的基础了

基本概念

全局变量:在模块内、所有函数外、所有class外

局部变量:在函数内、在class的方法(类方法、静态方法、实例方法)内,且变量前面没有修饰

类变量:在class内,不在class的任何方法内

实例变量:在class的方法内,且使用self修饰的变量

【全局变量】与【局部变量】举例

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

def print_ahead():
    print(ahead)   #在该函数中没有称为ahead的局部变量,此处实际调用的是全局变量ahead

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

def print_list():
    global showList    #global关键字表示引用的是全局变量showList
                    
    showList.append(1)
    showList.append(2)
    print(showList)

print_ahead()
print_other()
print_list()

输出结果:

HelloWorld
beijingHelloWorld
[1, 2]

【类变量】与【实例变量】举例

class Person(object):
    TAG = "Person"               #TAG是类变量
    def __init__(self, name):    #self表示当前实例对象
        print(Person.TAG)      #类变量TAG被访问
        self.personName = name   #personName是实例变量

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

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

输出结果:

Person
BeiJing_WangYuanWai

全局变量与局部变量同名

firstValue = "Hello World"

def print_str():
    firstValue = "hi man"

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

如果在print_str函数中没有使用global关键字显式引用全局变量,在print_str函数中将优先使用局部变量,而不是全局变量

省略global关键字

你的函数里只是读取全局变量的值,并没有对变量有任何的赋值行为(指a = XXX这种的写入)的话,可以省略global修饰全局变量

first = 100 #first是全局变量

def my_hello():
    print(first) #只是访问(读取)全局变量first的值,无需global修饰(加上global更规范)

不可省略global关键字

name = "王员外"

def change_name():
    global name
    name = "大哥大"

 上面的代码必须加上global修饰变量,说明是给全局变量name赋值,如果没有global修饰,只会说明你是在创建一个局部变量

Python中的一切都是对象

全局变量:属于模块对象的属性

类变量:属于类对象的属性

实例变量:属于实例对象的属性

局部变量:属于方法对象或函数对象的属性吗?不属于………函数对象或者方法对象必须显式的添加属性……

  • 21
    点赞
  • 7
    评论
  • 67
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值