python中的变量

本文介绍了Python作为弱类型语言的特点,强调在定义变量时不声明类型,而是通过对象的类型判断。通过`isinstance()`函数展示了变量实际指向的是内存中的对象。详细阐述了变量创建的过程,包括内存中对象的分配和变量名对内存地址的绑定。此外,还解释了变量改变引用时的情况,并简要提及了堆栈的概念。通过实例帮助理解Python动态类型和内存管理的本质。
摘要由CSDN通过智能技术生成

python是一种弱类型声明的语言,因此在定义变量时不需要声明类型。

        先不说那么多,我们先定义两个变量

a = 3  # 定义变量a,并把3赋值给它

b = 4  # 定义变量b,并把4赋值给它

c = 'new_str'  # 定义变量c,将一个字符串赋值给它

         学过python的同学可能一直以来都是这么写的,但是对于很多以前学过java,c++的同学来说,可能会有疑问,为什么在定义a,b,c这三个变量时没有声明类型呢,它们是怎么判断值的类型的呢?

        其实,这里就体现出python是一种‘动态’的语言,动态类型是python非常重要的一个概念,其实在python中我们虽然把3,‘new_str’这些值称作”变量“,实际上他们在python中都是一个个对象,那么他们是谁的对象呢?我们通过代码来看一下:

print(isinstance(3, int))  # True

print(isinstance(4, int))  # True

print(isinstance('new_str', str))  # True

         这里isinstance(a, b) 函数实际上用于验证a是否是b的对象,如果是的话返回true,这里显然,3和4是int(整型)类的对象,‘new_str’ 是str(字符串)类的对象

        我们知道类的每一个对象实际上都是内存中的一块独立的区域 ,我们在调用他们的时候通过的方式只能是引用,所以实际上python中变量的声明并不是直接将值和变量名,实际上是将变量的内存地址与变量名绑定,并且引用随时可以指向一个新的对象,接下来我们来看一下变量创建的步骤并且改变变量的引用:


a = 3

# 以 a = 3 为例

# 1. 在内存中创建 ‘3’ 这个整型类的对象(有独立的空间)

# 2.将 a 这个名称指向 a 在内存中的地址


b = a

# 将 b 也指向 a ,这时候实际上 b 和 a 没有关系,在本质上是 b 指向 ‘3’ 这个对象 


b = 7

# 将 b 的引用改变,使它不再指向 3 ,实际上这里又重复了前两个步骤

        所以总结一下上面讲的内容:为什么说python是一种弱类型声明的语言呢,因为在python定义变量时,并不是直接将变量值与变量名绑定,而是将变量值的地址与变量名绑定,这与其他很多语言例如c++不同,这也造就了python语言天生的多态(后面会讲到多态的概念),python的变量名只是一个标识符,并不占有内存空间,只是用于代指内存中的一块区域,这块区域里面存放着“变量的地址”,注意是变量的地址而不是变量本身,下面用图来说明(自己手画的)

 注:上边b指向的地址尾数0 变成 3

        补充一下,有些同学可能对上面的堆和栈不怎么了解,我们现在简单理解一下:系统帮忙处理的就是栈,堆中具体存放的内容由程序员来设置,就好像我们将40赋值给变量a,40是我们输入的值,放在堆中,栈中的存储则是系统帮我们进行处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值