1、Python变量

变量的定义:

可以看成一个小箱子,专门用来“盛装”程序中的数据。每个变量都拥有独一无二的名字,通过变量的名字就能找到变量中的数据。

2.变量的赋值

Python 使用等号=作为赋值运算符,具体格式如下:

name = value

#name为变量名 =为赋值符号 value为变量值

3.变量的引用

变量 和 数据 都是保存在 内存 中的

在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引用 传递的

3.1 引用的概念

在Python中:

变量与数据分开存储

数据保存在内存的某个位置

变量中存放的是数据在内存中的地址

变量中存放数据的内存地址,就是引用

使用id()可以查看变量中保存的数据的内存地址。

#关于变量的多次赋值(不可变类型)

a = 1a= 2

‘‘‘首先:a = 1 ,在内存中为1开辟一个空间,将1存进去,a中保存着1的内存地址

然后 a = 2,在内存中为2开辟一个空间,将2存进去,a中保存着2的内存地址

总结:在python中队同一个变量的多次赋值,并不是在同一个内存空间中刷新其中存放的值,而是将变量中存放的地址进行更新,使其指向不同的地址空间(数据)。‘‘‘

#变量引用的例子

a = 1

b = 2

c = a #将存在a中的地址赋值给c,现在c也指向了值为1的内存地址

id(a)

id(c)#使用id()查看变量中存放的内存地址 与a一致

python文本中引用变量 python怎么引用变量_数据

3.2 ==和is

==用来比较变量所指向的内存中的值是否相等

is用于判断两个变量引用对象(存放的对象的值)是否为同一个,对象就是=右边那个值,is比较的是两个变量中存放的内存地址是否相同。

#==和is的区别

a = [1, 2, 3]b =ab == a #True

b is a #True

c = a[:] #复制列表,在内存中另外存放这段被复制的值,将c指向它

b is a #True

b == a #False

#为什么相同的值内存地址不同呢?

3.3 函数的参数和返回值的传递

在 Python 中,函数的 实参/返回值 都是是靠 引用 来传递来的

#Python中函数参数是引用传递(注意不是值传递)

deftest(num):print("-" * 50)print("%d 在函数内的内存地址是 %x" %(num, id(num)))

result= 100

print("返回值 %d 在内存中的地址是 %x" %(result, id(result)))print("-" * 50)returnresult

a= 10

print("调用函数前 内存地址是 %x" %id(a))

r=test(a)print("调用函数后 实参内存地址是 %x" %id(a))print("调用函数后 返回值内存地址是 %x" % id(r))

4.变量的可变类型和不可变类型

不可变:内存中存放的数据不允许被修改

数据类型:int, bool, float, complex

字符串:str (用单引号或者双引号包含字符串)

元组:tuple(用()包含元组)

可变:内存中的数据可以被改变

列表:list(用[]包含)

字典:dict(用{}包含)

集合:set(可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用set() 而不是 { },因为 { } 是用来创建一个空字典。)

总结:

可变类型:变量在第一次被定义的时候就固定分配了内存地址,变量中的内存地址不会随着值的改变而改变。

不可变类型:给同一个变量多次赋值,变量中的地址会随着值的改变指向新的内存地址。

#不可变类型

x = 18id(x)

prinnt(x)#值为18

x+= x #值为19

id(x) #id改变

print(x) #值为19

#可变类型

y = [1,2,3]

id(y)print(y)

y.append(4)

id(y)#内存地址不变

print(y)#值改变

5.小整数池

python中经经常使用的一些数值定义为小整数池,小整数池的范围是[-5,256],python对这些数值已经提前创建好了内存空间,即使多次重新定义也不会在重新开辟新的空间,但是小整数池外的数值在重新定义时都会再次开辟新的空间。

小整数池目的:节省内存,提高执行效率。

需要注意的是:Python实现int的时候有个小整数池。为了避免因创建相同的值而重复申请内存空间所带来的效率问题, Python解释器会在启动时创建出小整数池,范围是[-5,256],该范围内的小整数对象是全局解释器范围内被重复使用,永远不会被垃圾回收机制回收。

python文本中引用变量 python怎么引用变量_Python_02

a=5b=5ais b #True

a=1000b=1000ais b #False