Python的表达式和语句、优先级、对象引用计数

Python的表达式和语句、优先级、对象引用计数

  表达式:表达式表达的是某件事,由值、变量和运算符组成的。它是由一个或多个操作数以及0个或0个以上的运算符组成的序列。

  语句:语句表达的是做某件事,它是以分号(;)结尾的单行代码或者是语句块中一系列的单行语句。

  优先级:Python语句或程序中运算执行的先后顺序

  引用计数:用于查看某个对象的引用计数


Python的表达式

1、Python中的常用的表达式操作符:

算数运算:x + y, x - y,x * y, x / y, x // y, x % y

逻辑运算:x or y, x and y, not x

成员关系运算:x in y, x not in y

对象实例测试:x is y, x not is y

比较运算:x < y, x > y, x <= y, x >= y, x == y, x != y

位运算:x | y, x & y, x ^ y, x << y, x >> y

一元运算:-x, +x, ~x:

幂运算:x ** y

索引和分片:x[i], x[i:j], x[i:j:stride]

调用:x(...)

取属性:x.attribute

元组:(...)

序列:[...]

字典:{...}

三元选择表达式:x if y else z

匿名函数:lambda args: expression

生成器函数发送协议:yield x

 

Python语句

1、赋值语句:赋值语句有两个作用,一是建立新的变量,二是将值赋予变量。任意变量在使用时,都必须赋值,否则将触发异常。

python会在首次给变量赋值时创建变量名并建立对象引用。

1)、隐式赋值:import, from, def, class, for, 函数参数

In [8]: import sys

In [9]: sys.getrefcount(num1)

Out[9]: 4

In [10]: def printName():

           print name 

2)、元组和列表分解赋值:当赋值符号(=)的左侧为元组或列表时,Python会按照位置把右边的对象和左边的目标自左而右逐一进行配对;

而个数不同时会触发异常,此时可以切片的方式进行;

In [1]: l1 = ('Sun','Sat','Mon')

In [2]: x,y,z = l1

In [3]: print x

Sun

In [4]: print y

Sat

3)、多重目标赋值

In [5]: num1 = num2 = num3 =666

In [6]: print num1

666

In [7]: print num2

666

4)、增强赋值: +=, -=, *=, /=, //=, %=,

In [10]: a = 3

In [11]: a += 1

In [12]: print a

4

2、其它常见语句说明:

import语句 :模块导入

模块属性导入语句:import * from module:

In [1]: from random importchoice,randint,random

调用语句:

In [2]: i1 = mymod.MyClass('Field')

print语句: 打印对象

条件判断语句:if/elif/else:

In [3]: A = 6;B = 9

In [4]: maxnum = A if A > B else B

序列迭代语句:for/else:

普通循环语句:while/else:

语句内可用参数:

         pass:占位符

         break:跳出最内层的循环

         continue:跳到所处的最近层循环的开始出

函数定义语句:def:

参数返回:return:

In [5]: def f2(x,y): return x + y

In [6]: f2(222,444)

Out[6]: 66

生成器函数语句:yield:

In [7]: f1 = lambda x,y: x + y

In [8]: f1(222,444)

Out[8]: 666

         globalx: 命名空间,全局变量

异常触发语句:raise:

类定义语句:class MyClass:

异常捕获语句:try/except/finally:

删除引用:del:

调试检查语句:assert:

环境管理器:with/as:

 

Python中运算优先级

以下为优先级顺序,从上往下优先级降低,具有相同优先权的运算符从左到右进行计算

序列类型:(...), [...], {...}

索引和切片:s[i], s[i:j]

取属性:s.attribute

对象方法:s(...)

一元运算:+x, -x, ~x

乘幂运算:x ** y

算数乘除、取余、取模运算:*, /, //, %

算数加减运算:+, -

位移运算:<<, >>

按位与:&

按位抑或:^

按位或:|

比较运算:<, <=, >, >=, ==, !=

对象实例测试运算:is, not is

成员关系运算:in, not in

非:not

与:and

或:or

匿名函数:lambda

 

Python中对象引用计数:sys.getrefcount()

Python增加对象的引用计数场景:

         对象创建时;

         将对象添加进容器时;类似list.append()

         当对象被当作参数传递给函数时

         为对象创建另外变量名

Python减少对象的引用计数场景:

         引用此对象的某变量名被显式销毁:del x

         给引用此对象的某变量名重新赋值

         从容器中移除对象时,类似list.pop()

         容器本身被销毁

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值