环境(变量)的本质

提出问题

我们都听过环境、环境变量等等名词。那么,它的本质到底是什么呢?

环境(变量)的本质

命名

假设现在有一个程序对象:

akdhihei

你知道这是个什么高级语法吗?

对的,这就是我胡乱打的,我也不知道它是什么。

那么再看一个对象:

path

这可能就有些熟悉了,配置过环境的同学都知道,path是我们的环境变量。

再看:

a

a又是什么呢?与上面的path类比,那么a就是一个变量呗!

那么这个变量有什么含义吗?没有!

那么现在再反问,上面的path有意义吗?

你可能说:有!它是环境变量!

屁!你给我指指看,上面那个path是谁的环境变量,它又指向了谁!

你可能有一点点明白了!

这些变量:akdhihei、path、a他们都是变量,本质可以说是容器可以存放值,也可以说是一个程序的对象,它本身没有意义!

它就是一个名称罢了,我们称之为命名

环境

那么,怎样才能让命名有意义呢?

没错,就是给他赋值!

也可以说,没有值的变量并没有存在的意义

(你是不是联想到了,你写Python,Java的时候,当你没有使用某个变量,没有赋值,只是定义的时候,编辑器会有小波浪,向你提出warnings!)

现在你应该明白了,定而不用,就是没有意义,没有价值,浪费内存资源。因为这个内存(地址)就被占了。用一句话概括就是,占着茅坑不拉屎!

为了让它有意义,应该干嘛?赋值

比如:

#define a 5

#define akdhihei 8

那么现在可以说,这些被命名的对象们有了意义。它们和某一个具体的值联系起来了,后面的程序中,你看到a就知道它代表5!看到akdhihei就知道它代表8!

print(a + 1)

你一定知道这个程序的结果是什么。而在a被赋值之前,你并不知道!

那么这个操作的本质是什么呢?

值与符号进行关联,关联之后,又可以通过符号提取数值。那么这是怎么做到的呢?解释器会维护着这样一种储存能力,以便保持着有关的名字-值对偶的关联!

而这种存储,就被称之为环境,(更加准确是,全局环境),那么局部变量,和其它不同作用域,就是不同的环境!这就是环境的本质!

path环境变量

刚刚所说的是广义的环境。那么以path代表的环境变量是环境概念下的子集。

以python环境为例,在没有配置python环境之前,你在CMD终端中输入python,会显示

'python' 不是内部或外部命令,也不是可运行的程序或批处理文件。

而你把python环境配置一下之后,就可以了。

那其中到底干了什么呢?

其本质就是,path是一个变量,里面储存着一些文件的路径。在CMD命令行中输入命令的时候,系统会去path里面找相应的程序(或者在写程序的时候对调用path的路径等等)。比如说你的python.exe
路径为"E:/",你把"E:/"加入到环境变量path中,那么就可以找到了,就可以在终端中运行了。

那么,这个概念依旧是名字-值的关联。path是名字,文件路径是"E:/",环境变量这个狭义概念的赋予是因为,在windows系统中,CMD会通过path中提供的路径去搜寻,如果没有在path中配置(把路径赋值给path),就找不到,就不可以通过CMD执行(你手动进入那个文件夹,鼠标点击运行是一点问题也没有的!)。这相当于在Windows下的一个CMD运行环境path,CMD是系统级别的,所以这个环境比较高级。上面的a=5这个环境就很不重要了!但他们的本质都是一样的——

那就是字符(名称)-值的关联

配置环境=把变量(path)和值(文件路径)关联上这一行为过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jake484

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值