变量分类
a、全局变量:在模块内、在所有函数外面、在class外面,这就是全局变量。
b、局部变量:在函数内、在class的方法(构造、类方法、静态方法、实例方法)内(变量未加self修饰),这就是局部变量
c、类变量:在class内的,但不在class的方法内的,这就是静态变量
d、实例变量:在class的方法内的,用self修饰的变量,这就是实例变量
版权声明:本节摘选自CSDN博主「叫我王员外就行」的原创文章
原文链接:https://blog.csdn.net/cadi2011/article/details/52457754
空变量(对象)
需要定义一个变量(对象),但暂时不给它赋值时,使用None来给它赋值。
name = None
is运算符
is 用于判断两个对象的所指向的内存地址是否一致,返回True或False
is not 相反
与==的区别:==用于判断两个变量的值是否相等
局部变量
在一个函数内部,在等号左边的变量都是局部变量!!!!即使这个变量看起来是全局变量(和全局变量同名)或全局变量作为形参传进来的!
看下面:
def travel(): y = 0 def walk(x): y += x #等号左边的y会被认为是局部变量,而作为局部变量它没有被初始化,所以会报错 return y return walk
结果:
UnboundLocalError: local variable 'y' referenced before assignment
解决方法:使用nonlocal关键字声明它不是局部变量,而是本函数的上一层函数中的局部变量(若上一层没有函数而是模块,则报错)。而且用nonlocal声明的变量不会改变外层的原来变量,却能记忆上次执行时它的值。我也很困惑。