首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

第三讲——变量的声明、赋值

变量的声明、赋值

学过C语言以及其他语言的人都知道,变量的声明包括两个部分:变量类型以及变量名字,最后还要加一个分隔符,类似于这样:

首先写一个数据类型,后面写一个变量的名字,然后就是定义了一个变量,那么这个过程是什么呢?

在解释器中,看到数据类型int,首先划了一块内存,然后命名为num,我们赋值其实就是向这块内存中存入这个数据,如图:

之前已经讲过,在Python中不需要定义变量,可以直接拿一个名字去赋值,然后就可以使用,并且在使用过程中这个变量的数据类型还可以一直发生变化,类似于这样:

所以在Python中,解释器并不是类似于C语言那样去解释程序的,和C语言相反,Python中,是划了一块内存,存入了一个数据,然后用一个变量去指向这块内存,当你重新赋值时,又指向另一块内存,而没有变量指向的内存,由Python解释器内置的垃圾回收直接回收掉。

我们可以看到,每次我们重新赋值后,变量的地址(即id())就发生了变化。

当我们执行赋值语句,将我们的a中的值赋值给b时,查看一下地址我们发现,我们的a和b的地址指向的是同一块,所以,Python中的变量赋值过程是这样的:

所以如果我们改变这块地址中的东西,不管我们是使用a还是b去改变这块内存,改变之后两个变量的值都会被改变。

可是,有人会发现这样的问题:

有人会说,你是不是骗我啊,这明明是a改变了b没改变啊!!

其实,这种情况下,a的地址已经改变了,a的地址已经从100的地址指向1000,而b指向的地址仍然是100,所以会出现这种情况。

换一种方式:

我们去在这个内存中追加赋值,而不是直接赋值,就可以看到,两个变量都发生了变化,这次我们用b去追加赋值:

同样,也是两个都发生了变化!

在Python中,我们使用变量时一定注意,不要和其他语言一样,如果那样,可能会引起不必要的BUG,同时还不容易发现。

降落

今天就到这里,谢谢观看

感觉不错的话,分享一下吧

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180711G0ULYF00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券