首页 > 编程语言 > 详细

1、python变量

时间:2021-01-25 09:16:05      阅读:32      评论:0      收藏:0      [点我收藏+]

1、Python变量

 

  1. 变量的定义:

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

2.变量的赋值

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

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

  3.变量的引用

  • 变量 和 数据 都是保存在 内存 中的
  • 在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引用 传递的

    3.1 引用的概念

  在Python中:

  • 变量与数据分开存储
  • 数据保存在内存的某个位置
  • 变量中存放的是数据在内存中的地址
  • 变量中存放数据的内存地址,就是引用
  • 使用id()可以查看变量中保存的数据的内存地址。
#关于变量的多次赋值(不可变类型)
a = 1
a = 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一致

技术分享图片

 

 

 

    

  

 

 

 

   3.2 ==和is

  • ==用来比较变量所指向的内存中的值是否相等
  • is用于判断两个变量引用对象(存放的对象的值)是否为同一个,对象就是=右边那个值,is比较的是两个变量中存放的内存地址是否相同。
#==和is的区别
a = [1, 2, 3]
b = a 
b == a #True
b is a   #True

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

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

 

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

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

#Python中函数参数是引用传递(注意不是值传递)
def
test(num): print("-" * 50) print("%d 在函数内的内存地址是 %x" % (num, id(num))) result = 100 print("返回值 %d 在内存中的地址是 %x" % (result, id(result))) print("-" * 50) return result a = 10 print("调用函数前 内存地址是 %x" % id(a)) r = test(a) print("调用函数后 实参内存地址是 %x" % id(a)) print("调用函数后 返回值内存地址是 %x" % id(r))

 

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

  • 不可变:内存中存放的数据不允许被修改
    • 数据类型:intboolfloatcomplex
    • 字符串:str (用单引号或者双引号包含字符串)
    • 元组:tuple(用()包含元组)
  • 可变:内存中的数据可以被改变
    • 列表:list(用[]包含)
    • 字典:dict(用{}包含)
    • 集合:set(可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。)
  • 总结:
    • 可变类型:变量在第一次被定义的时候就固定分配了内存地址,变量中的内存地址不会随着值的改变而改变。
    • 不可变类型:给同一个变量多次赋值,变量中的地址会随着值的改变指向新的内存地址。
#不可变类型
x = 18
id(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],该范围内的小整数对象是全局解释器范围内被重复使用,永远不会被垃圾回收机制回收。

技术分享图片

 

 

a=5
b=5
a is b #True

a=1000
b=1000
a is b #False

 

1、python变量

原文:https://www.cnblogs.com/betterbetter/p/14323043.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!