Python直接引用和间接引用

前面我们讲变量的时候说过,Python在执行自定义代码的时候,会申请内存空间,然后把值存进去,再把内存地址绑定给变量名。

现在我定义一个变量名,name=‘于谦’。变量定义完了之后是为了以后能用,而变量的引用方式又有两种,一种方式就是直接引用,就是直接通过变量名引用对应值。另一种就是间接引用,间接引用主要针对是容器类型。

比如我定义一个列表l,第一个值我存一个字符串a,第二个值我存一个字符串b,第三个值我直接写name,没有加引号。所以它代表的是就是前面我们定义变量名name。

这个变量名引用到了他的值‘于谦’,也就是说把name放在这里,就等于把‘于谦’的内存地址放在这里了,这就叫间接引用。因为这个l直接指向的是这个列表的内存地址。

然后这个l[2],指向的就是前面我们定义的这个name,所以说这个‘于谦’是用过这个列表简介引用到的。我现在直接print这个l[2],也是可以访问到‘于谦的’。

那怎么证明这个l[2]访问的和前面的‘于谦’是同一个值呢?前门我们学过看它们的id是否一样是不是就可以直接看出来了。我现在直接打印name的id和l[2]的id。

显示出来的两个id都是一样的,这时候学的好的同学就有人问了,说前面我们学过,这个Pycharm会扩大小整数池,这个‘于谦’Pycharm会给我们做优化,所以在Pycharm里面我们看到的id是一样的。

现在我把这几行代码复制一下,到cmd终端里用Ptython交互式环境看一下。

你会发现,这两个id确实是一样的,证明这两次访问name和l[2]取的都是同一个值,只是前面这个我们称为直接引用,后面这个我们称为简介引用。

未经允许不得转载:445IT之家 » Python直接引用和间接引用

赞 (0) 打赏

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏