如何在python中定义变量?

发布时间:2024年01月19日

全局变量

全局变量供全局共享,全局类和函数均可访问,达到同步作用。同时还可以被外部文件访问。使用全局变量使用的时候,需要用global显示声明。

一般情况下,如果函数直接调用全局变量,不做更新的话,一般没有问题,但如果有重新赋值,又没有在函数内部使用 global声明的话, 就相当于在内部创建了一个同名的局部变量,局部变量优先级要高于全局变量。

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

# coding:utf-8
_all = 'HelloWorld'  # 全局变量
_all_list = []  # 全局变量


def printall():
    global _all  # 这里需要用global显示声明
    print(_all)  # HelloWorld

局部变量

#在函数内、在class的方法内(未加self修饰),这就是局部变量
# coding:utf-8
def show():
    city = 'Beijing'    # 局部变量
    print city

静态变量

可以称为是类变量,通过类名可以直接访问,也可以通过实例名直接访问,此变量在类中全局共享,实例之间也是全局共享。可以看下面实例

# 在class内的,但不在class的方法内的,这就是静态变量

# coding:utf-8
class foo:
    all = 0

    def add(self):
        foo.a += 1


instance01 = foo()  # 实例化对象1
instance02 = foo()  # 实例化对象2
print('instance01.all')  # 执行结果为:0
print('instance02.all')  # 执行结果为:0
print('foo.all')  # 执行结果为:0

instance01.add()
print('instance01.all')  # 执行结果为:1
print('instance02.all')  # 执行结果为:1
print('foo.all')  # 执行结果为:1

instance02.add()
print('instance01.all')  # 执行结果为:2
print('instance02.all')  # 执行结果为:2
print('foo.all')  # 执行结果为:2

实例变量

对于模块来说,有了自己的全局变量,可以供自己内部的类,函数使用,同步;对于函数或者类方法来说,有了自己的局部变量,供自己内部使用;对于类,有了静态变量,可以供内部和有继承关系的父子之际使用,同步;但实例之间各自的私有变量(局部变量)就要靠实例变量了,实现了动态绑定,多态特性。用self来修饰

#在class的方法内的,用self修饰的变量,这就是实例变量
# coding:utf-8
class foo:
    all = 0
    def __init__(self, name):
        self.name = name
    def add(self):
        foo.q += 1

instance01 = foo('hello')
instance02 = foo('hi')
print ('instance01.name')    # hello
print ('instance02.name')    # hi
print ('foo.name')     # AttributeError:class foo has no attribute 'name'

文章来源:https://blog.csdn.net/m0_58082414/article/details/135629985
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。