看一个python写的java,居然写出全局变量了。
如果熟练熟悉py oop也能够知道,类里面是没有全局变量的。
类里面的变量就分三种 类属性 实例属性 局部变量 ,类属性 也可以叫静态属性 静态变量 ,实例属性也可以成员变量都差不多的意思。但不存在什么全局变量。
为什么有的语言有全局变量?js py php都有。
在py中如果使用面向过程编程的时候,多个函数操作一个变量,除非频繁的在多个函数中传参和return。否则就需要用到全局变量了,因为函数是在模块级别的命名空间下,那么函数之外写变量只能是模块下面写了,模块之下的变量就叫全局变量。
如果是oop编程,方法的命名空间并不是在模块下,而是在类名下,所以只需要把那个本来在面向过程的时候需要写成全局变量的东西,写成实例或者类属性即可。这样在多个方法中都可以访问这个变量。因为oop把命名空间下沉了一级,模块 - 类 -方法 三级,不同于面向过程时候的 模块 -函数 两级。
java作为强制oop的语言,一切以类为命名空间,当然就没必要搞个全局变量了。
这和我之前所印证的一样,写py时候不要使用全局变量尤其是全局可变变量,和到处声明gloabl,真的是蛋疼,一点oop的意识都没。使用oop完全可以彻底消除全局变量。一直安逸于十几年如一日重复写面向过程的low逼代码不是一件好事。