如果读者对我前面的东西有印象,就会发现我写过“何谓变量”这个点,当时原文如下:
当然,我现在又取这个题目,不是因为对变量又有什么颠覆性的认识或者其他什么,而是试着从另一个角度深入探讨一下“变量”究竟是一个什么东西,所以,002里面讲的固然也不错,但和今天写的——怎么说呢,不是从一个角度出发的。
介于很多人“母语”都是C-Style的语言(本菜鸡也是),几乎发自直觉就认为变量的出现是一个这样的过程:
int Num_men = 1;
换言之,先从内存中开辟出一块区域当作变量的储存空间,又让这个储存空间里的数据变成1(或者其他任何合法数据),所以,出于这种理解,我很可以解释很多东西,譬如说为什么C系列语言的数据类型要求如此严格(因为要先开辟空间,如果开小了,岂不尴尬?),我们还可以很直观地解释变量数据的变化——就是把空间里的数据变了一下嘛。
所以我们很容易形成这样一种思想:变量是一个盒子,而数据是一个“东西”,盒子就在那里,区别在于里面装了什么东西。
但是在Python中,这样的理解很有可能会造成困扰(事实上所有面向对象语言中都会遇到这样的小矛盾),譬如说,为什么我们甚至都不知道变量是个整数还是小数就能“造”出一个变量来?不怕造出来的变量盒子和“东西”不匹配?
其实Python这种变量风格,可以叫做“引用式变量”。
换言之,我们可以这样理解,在搞一个变量出来的时候,Python是先做出了变量的内容,然后给它贴了个标签,就好像生了个孩子然后挣扎半天才下定决心:
对,就是你,那个小脸儿皱皱巴巴的小屁孩,你就叫狗蛋吧。
铁打的数据流水的标签,所以,在Python里不要再张口闭口“把12赋给a”了,也试着来一句“把a赋值给12”,以后会有用的。
网友评论