如何在Python中定义变量

图片[1]-如何在Python中定义变量-uusu优素-乐高,模型,3d打印,编程

我们首先看一下变量的分类,通常情况下,我们所说到的定义一个变量,如果没有特殊说明,那么就是定义一个全局变量。

全局变量

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

局部变量

在函数内、在class的方法内(未加self修饰),这就是局部变量

静态变量

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

实例变量

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

全局变量

全局变量供全局共享,全局类和函数均可访问,达到同步作用。同时还可以被外部文件访问。

使用

全局变量使用的时候,需要用global显示声明。

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

#coding:utf-8
_all='HelloWorld'#全局变量
_all_list=[]#全局变量
defprintall():
global_all#这里需要用global显示声明
print_all#HelloWorld

局部变量

#coding:utf-8
defshow():
city='Beijing'#局部变量
printcity

静态变量

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

#coding:utf-8
classfoo:
all=0
defadd(self):
foo.q+=1
instance01=foo()#实例化对象1
instance02=foo()#实例化对象2
printinstance01.all#执行结果为:0
printinstance02.all#执行结果为:0
printfoo.all#执行结果为:0
instance01.add()
printinstance01.all#执行结果为:1
printinstance02.all#执行结果为:1
printfoo.all#执行结果为:1
instance02.add()
printinstance01.all#执行结果为:2
printinstance02.all#执行结果为:2
printfoo.all#执行结果为:2

实例变量

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

用self来修饰

#coding:utf-8
classfoo:
all=0
def__init__(self,name):
self.name=name
defadd(self):
foo.q+=1
instance01=foo('hello')
instance02=foo('hi')
printinstance01.name#hello
printinstance02.name#hi
printfoo.name#AttributeError:classfoohasnoattribute'name'

总结

在整个代码组织的过程中,一般会有这样两种基本需求,私有 和 公有。

私有

不与其他共享,自己独享,如函数和方法的局部变量,实例变量

公有

需要在一定范围内共享,达到同步目的,如模块内的代码共享的全局变量,类与子类之间共享的静态变量。

原文来自:https://www.py.cn
© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容