当前位置: 首页> 技术文章> python赋值运算与内存管理机制

python赋值运算与内存管理机制

2.赋值运算符

=:简单的赋值运算符

>>> a=5    #一个等号为赋值  
>>> b=4
>>> c=a+b>>> print(c)9

+=:加法赋值运算符

>>> a=5
>>> b=3
>>> a+=b   #a+=b 等于 a=a+b   把a+b的值重新赋值给a   之所以a被称为变量  是因为值是不断变化的>>> print(a)8

-=:减法赋值运算符

>>> a=5
>>> b=3
>>> a-=b   #等于a=a-b>>> print(a)2

*=:乘法赋值运算符

>>> a=5
>>> b=3
>>> a*=b  #等于a=a*b>>> print(a)15

/=:除法赋值运算符

>>> a=5
>>> b=3
>>> a/=b   #等于a=a/b>>> print(a)1.6666666666666667

%=:取模赋值运算符

>>> a=5
>>> b=3
>>> a%=b   #等于a=a%b>>> print(a)2

**=:幂赋值运算符

>>> a=5
>>> b=3
>>> a**=b  #等于a=a**b>>> print(a)125

//=:取整赋值运算符

>>> a=5
>>> b=3
>>> a//=b  #等于a=a//b>>> print(a)1

3.python变量命名规则

  变量名由字母,数字,下划线组成 。

  但必须是字母或下划线开头。区分大小写,不能由数字开头

  变量名不能包含空格

  不能用python的保留关键字作为变量名

  _xx:前置单下划线变量名:私有属性或方法 但是并不能做到真正的 '私有' 只是约定俗称而已 这样写表示这个变量不希望在外部直接被调用,但是类对象和子类可以访问

  __xx:前置双下划线变量名:私有属性或方法 无法在外部直接访问。真正的私有 只允许类本身进行访问  连子类都不能访问

  __xx__:前后双下划线变量名:系统定义名字 对于python来说有特殊意义 一般用于类对象中的构造方法 普通变量应该避免这种命名风格

  xx_:后置单下划线变量名:用于避免python关键字冲突

 

>>> 5a=2   #数字开头的变量报错 
  File "<stdin>", line 1
    5a=2
     ^SyntaxError: invalid syntax>>> a2=2
>>> print(a2)2
>>> a 2=2  #空格的变量名报错
  File "<stdin>", line 1
    a 2=2
      ^SyntaxError: invalid syntax

4.python内存管理机制

  • 变量与对象 关系图如下

 

 

  • 变量:通过指针引用对象 指针指向具体对象的内存空间 取对象的值

  • 对象:类型已知 每个对象都包含一个头部信息(类型标识符和引用计数器)

  • 注意:变量没有类型,类型属于对象 变量引用的对象是什么类型 变量就是什么类型

  • id()是python的内置函数,用于返回对象的身份,即对象的内存地址

>>> a=5
>>> b='zhang'>>> print(id(a))1947509984
>>> print(id(b))2910255636128
>>>
>>>
>>> c=b>>> print(id(c))    #c与b引用的是同一个对象 同一个内存地址2910255636128
>>> a=6   
>>> print(id(6))    #重新定义a时  内存地址会变1947510016
  • 引用所指判断

 

 

  • python通过is进行引用判断 is用来判断所引用的对象类型是否相同

  • Python缓存了整数和短字符串,因此每个对象在内存中只存有一份,引用所指对象就是相同的,即使使用赋值语句,也只是创造新的引用,而不是对象本身

  • Python没有缓存长字符串、列表及其他对象,可以由多个相同的对象,可以使用赋值语句创建出新的对象

整数

>>> a=1
>>> b=1
>>> print(a is b)
True

短字符串

>>> a='hello'>>> b='hello'>>> print(a is b)
True

长字符串

>>> a='hello duoceshi'>>> b='hello duoceshi'>>> print(a is b)
False

列表

>>> a=[]>>> b=[]>>> print(a is b)
False

字典

>>> a={}>>> b={}>>> print(a is b)
False

 

  • python垃圾回收

  • 当python的某个对象的引用计数器为0时,说明没有任何变量引用指向该对象,该对象就成为要被回收的垃圾

  • 比如某个新建对象,被分配给某个引用,对象的引用计数变为1。如果引用被删除,对象的引用计数为0,那么该对象就可以被垃圾回收

  • del a后,已经没有任何引用指向之前建立的5,该表引用计数变为0,用户不可能通过任何方式接触或者动用这个对象,当垃圾回收启动时,Python扫描到这个引用计数为0的对象,就将它所占据的内存清空

>>> a=5
>>> del a


上一篇: jmeter教程之基础介绍

下一篇: 软件测试之手工测试人员如何转测试开发?

QQ技术交流群

多测师官方学习交流
556733550

加入群聊