python中的变量与对象

1|0一. 什么是变量


变量就是以前学习的数学中常见的等式x = 3(x是变量,3是变量值),在编程中,变量不仅可以是数学,还可以是任意数据类型

2|0二. 变量的命名规则


变量名必须是英文大小写、数字和_的组合,不能以数字开头,不能是关键字

a ✔ _name ✔ Atest1 ✔ 1a ✘

那么,如何查看python中的关键字呢?

#导入模块 import keyword #打印关键字列表 print(keyword.kwlist)
结果: [
'False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

3|0三. 变量、对象和引用


在python中,一切都是对象,一切都是对象的引用

举个最简单的例子:

a = 3

如图所示,python将执行三个步骤来完成a = 3的赋值操作:

1. 创建也变量a

2. 创建一个对象(分配一块内存),来存储值3

3. 将变量与对象,通过指针连接起来,从变量到对象的连接称之为引用(变量引用对象)

4|0四. 类型属于对象,而非变量


在python中,我们无需事先声明变量的类型,变量类型是在运行过程中根据对象的类型自动决定的。

为了理解对象类型是如何使用的,请看我们对一个变量多次赋值后的结果:

a = 3 #整型 a = 'spam' #字符串 a = 1.2.3 #浮点型

在上面的例子中,a开始是一个整数,然后变成一个字符串,最后变成一个浮点数。看起来,a的类型发生了三次改变。

事实上,在python中,变量没有类型,类型是属于对象的。就像前面所说,a = 3,是变量a引用了对象3,而以上三条语句,实际上是变量a引用了不同类型的对象。

那么,对象的结构又是什么样的?

如下图所示,每个对象都包含了两个头部信息,一个是类型标志符,另一个是引用计数器。类型标志符标记了这个对象的类型,例如整数对象3,包含了值3和一个类型标志符(严格意义上,它是一个指向int的对象的指针),这就告诉python,这是一个整数对象。而'spam'字符串对象的标志符指向了一个字符串类型。由于对象记录了它们的类型,变量的类型就没有必要了。

5|0五. 对象的垃圾回收


 当变量a重新赋值时,它的前一个引用会发生什么变化呢?

a = 3 a = 'spam'

答案是,当变量a重新赋值给字符串'spam'时,它的上一个引用对象3马上被回收了,对象的空间自动放入自由内存空间池,等待后来的对象使用。

在python内部是这样实现这一功能的:它在每个对象内部分配了一个计数器,计数器记录了当前指向该对象的引用的数目,一旦这个计算器被设置为0(即这个对象没有被任何变量引用),该对象的内存空间就会自动回收。这种自动回收对象空间的机制就叫垃圾收集,它的最大好处是,可以再脚本中任意使用对象而不需要考虑释放内存空间,在程序运行时,python将会清理那些不再使用的空间。

 


__EOF__

本文作者cnhkzyy
本文链接https://www.cnblogs.com/my_captain/p/9063224.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   cnhkzyy  阅读(3609)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示