返回目录

本篇索引

(1)一些较容易搞错的运算符

(2)运算符优先级

(3)math模块

(4)表达式与语句

(1)一些较容易搞错的运算符

一般简单的如加减乘除之类的运算符就不写了,这里主要列些一些容易搞错或忘记的运算符。运算符不仅仅只有号,有一些英文单词如 in, and 之类,也是运算符,并不是语句。

运算符 简述 举例或说明
数字操作
/ 在Python3中,默认为浮点数除法;在Python2中,若除数和被除数都是整数,则默认为截断除法。若要在Python2中也为浮点数除法,需要使用: from __future__ import division

2/3   # Python3 中结果为:0.6666666666666666

2/3   # Python2 中结果为:0

// 截断除法(仅保留整数部分),又叫“地板除法”。

2//3   # 结果为 0

% 取模(浮点数也可以做取模运算)。

8 % 3   # 结果为 2

1.2 % 0.5   # 结果为 0.2

** 乘方(次方)运算。

2**3   # 结果为 8

-x 一元减法。

x=3; x=-y   # 结果为 x=-3

+x 一元加法(一般用不到)。

x=+3   # 结果为 x=3

位操作
& 按位与。

0b111 & 0b011   # 结果为 3

| 按位或。

0b010 & 0b001   # 结果为 3

^ 按位异或。

0b001 & 0b011   # 结果为 2

~ 按位求反。

~1   # 结果为 -2(这个涉及补码知识)

<< 左移

1<<2   # 结果为 4

>> 右移

1>>2   # 结果为 0

布尔运算
and 逻辑与(短路求值)

or 逻辑或(短路求值)

not 逻辑非

从属关系
in 属于成员

x in seq

not in 不属于成员

x not in seq

is 是否引用了内存中的同一个对象

x is y

is not 是否引用了内存中的不同对象

x is not y

其他
. 属性运算符

() 函数调用运算符

f=some_fun   # 假设some_fun为某个已定义函数

f()   # 即调用some_fun函数

(2)运算符优先级

下表中运算符优先级从高到低。

运算符 说明
(...), [...], {...} 创建元组、列表、字典
s[i], s[i:j] 索引和切片
. 属性运算符
() 函数调用运算符
+x, -x, ~x 一元操作符(一元加法、一元减法、按位取反)
** 乘方(次方)运算
*, /, //, % 乘法、除法、截断除法、取模
+, - 加法、减法
<<, >> 移位
& 按位与
^ 按位异或
| 按位或
<, <=, >, >=, ==, !=,
is, is not, in, not in
关系运算符、身份检查、成员检查
not 逻辑非
and 逻辑与
or 逻辑或
lambda args: exrp 匿名函数

(3)math模块

前面的运算符仅能做一些最基础的运算,如果需要进一步的标准数学运算函数,需要导入math模块。
math模块所有函数的返回值都是浮点数,所有三角函数都默认使用弧度。math模块不支持复数运算,若要运算复数,需要导入cmath模块。

字符串方法 简述 举例或说明
属性
pi 数学常数π

math.pi   # 结果为 3.141592653589793

e 数学常数e

math.e    # 结果为 2.718281828459045

tau Python3.6新增,数学常数

math.tau   # 结果为 6.283185307179586

inf Python3.5新增,正无穷大

nan Python3.5新增,浮点数的NaN,相当于float('nan')

舍入运算
ceil(x) 返回x的向上舍入值

math.ceil(2.1)    # 结果为 3

math.ceil(-2.1)   # 结果为 -2

floor(x) 返回x的向下舍入值

math.floor(2.8)    # 结果为 2

math.floor(-2.8)   # 结果为 -3

trunc(x) 将x截为最接近于零的整数

math.floor(2.8)    # 结果为 2

math.floor(-2.8)   # 结果为 -2

一般数学计算
fabs(x) 返回x的绝对值,其效果同内置函数abs()

math.fabs(-2.8)   # 结果为 2.8

fsum(s) 返回可迭代序列s中的和,其效果比内置函数sum()更精确

math.fsum([1,1e100,-1e100])   # 结果为 1.0

sum([1,1e100,-1e100])   # 结果为 0.0(内置函数计算)

fmod(x, y) 返回x % y,浮点数亦可作取模运算

math.fmod(8,3)   # 结果为 2.0

pow(x, y) 乘方运算,返回x**y

math.pow(2,3)   # 结果为 8.0

sqrt(x) 返回x的平方根

math.sqrt(4)   # 结果为 2.0

hypot(x, y) 返回坐标点(x,y)到原点的几何距离,即sqrt(x*x + y*y)

math.hypot(3,4)   # 结果为 5.0

factorial(x) 返回x的阶乘

math.factorial(4)   # 结果为 24

copysign(x, y) 返回与y具有相同符号的x

math.copysign(1,-3)   # 结果为 -1.0

gcd(x, y) Python3.5新增,返回x与y的最大公约数(Greatest Common Divisor)

math.gcd(6,8)   # 结果为 2

exp(x) 返回 ex

math.exp(1)   # 结果为 2.718281828459045

expm1(x) Python3.2新增,返回exp(x)-1,

math.expm1(1)   # 结果为 1.718281828459045

ldexp(x, i) 返回 x * 2i

math.ldexp(4, 10)   # 结果为 4096.0

log(x [,base]) 返回指定base为底的x的对数,base默认为自然常数math.e

math.log(math.e)   # 结果为 1.0

math.log(100,10)   # 结果为 2.0

log10(x) 返回以10为底的x的对数

math.log10(100)   # 结果为 2.0

log2(x) Python3.3新增,

math.log2(8)   # 结果为 3.0

log1p(x) 返回1+x的自然对数

math.log1p(math.e-1)   # 结果为 1.0

erf(x) Python3.2新增,返回x的误差函数(统计学公式)

math.erf(1)   # 结果为 0.8427007929497149

erfc(x) Python3.2新增,返回x的互补误差函数(统计学公式)

math.erfc(1)   # 结果为 0.1572992070502851

gamma() Python3.2新增,返回x的伽玛函数(概率学公式)

lgamma() Python3.2新增,返回x的伽玛函数的绝对值的自然对数(概率学公式)

三角函数
sin(x) 正弦函数

math.sin(math.pi/2)   # 结果为 1.0

cos(x) 余弦函数

math.cos(math.pi/4)   # 结果为 0.7071067811865476

tan(x) 正切函数

math.tan(math.pi/3)   # 结果为 1.7320508075688767

asin(x) 反正弦函数

math.asin(1.0)   # 结果为 1.5707963267948966

acos(x) 反余弦函数

math.acos(1.0)   # 结果为 0.0

atan(x) 反正切函数

math.atan(inf)   # 结果为 1.5707963267948966

atan2(y, x) 返回atan(y/x)

math.atan2(2,2)   # 结果为 0.7853981633974483

degrees(x) 将x从弧度转换为角度

math.degrees(math.pi/2)   # 结果为 90.0

radians(x) 将x从角度转换为弧度

math.radians(180)   # 结果为 3.141592653589793

双曲函数
sinh(x) 双曲正弦函数

cosh(x) 双曲余弦函数

tanh(x) 双曲正切函数

asinh(x) 反双曲正弦函数

acosh(x) 反双曲余弦函数

atanh(x) 反双曲正切函数

其他
modf(x) 返回元组形式的x的小数和整数部分

math.modf(3.14)   # 结果为 (0.14000000000000012, 3.0)

frexp(x) 返回元组形式的x的正浮点尾数和浮点指数

math.frexp(100.0)   # 结果为 (0.78125, 7)

remainder(x, y) Python3.7新增,返回x类似浮点数结构的尾数,计算方式为:x-n**y,其中n为最佳接近x/y的整数。

math.remainder(10,1)   # 结果为 0.0

isinf(x) 如果x是正无穷大,则返回True

math.isinf(inf)   # 结果为 True

isfinite() Python3.2新增,如果x不是无穷大的数,则返回True

math.isfinite(123)   # 结果为 True

isnan(x) 如果x是浮点数的NaN(Not a Number),则返回True

math.isnan(float('nan'))   # 结果为 True

isclose(a, b) Python3.新增,如果a和b足够接近,则返回True

math.isclose(0.1,0.1000000001)   # 结果为 True

(4)表达式与语句

表达式与语句的根本区别在于:语句没有值,而表达式有值。

● 赋值语句

由于赋值语句是“语句”,故其没有值,不能像C语言那样使用诸如 if(a=3)之类的形式(C语言的赋值语句有值,值为赋值内容),但Python的赋值语句支持链式赋值、增量赋值、序列解包赋值等多种形式。

x = 1     # 普通赋值
x = y = 1 # 链式赋值
x += 1 # 增量赋值(使用增量运算符 += )
x,y,z = (1,2,3) # 序列解包赋值(将元组中的3个值分别赋给x,y,z)
x,y = y,x # 交换x和y的值

● del语句

del语句(del既不是内置函数,也不是运算符,是语句)可以移除一个变量名对实例的引用,并且也会移除这个变量名本身。 但是del不会真正在内存中删除实例,删除实例的工作是由“垃圾收集器”做的,当某个实例的被引用计数减到0时,垃圾收集器会真正删除这个实例并释放其占用的内存。

# ---------- del 示例1:----------
x = 1
del x # 之后x就不可用了 # ---------- del 示例2:----------
x = 'Hello'
y = x
del x # 虽然解除了x对'Hello'的引用,但由于y还指向'Hello',故'Hello'其实还在
print(y) # 结果为 'Hello'

● 条件表达式

条件表达式和C语言中条件赋值功能大致相同,语法格式如下:

x = a if 布尔表达式 else b

含义为:当布尔表达式的值为True,则将a赋值给x;否则,将c赋值给x。 条件表达式在“列表推导”和“生成器表达式”中比较有用。

● 连续比较表达式

Python支持比较运算符的连写,如:a < b < c < d,这样可以让代码看上去更精简。

返回目录

Python语法速查: 5. 运算符、math模块、表达式的更多相关文章

  1. Python语法速查: 4. 字符串常用操作

    返回目录 (1)字符串常用方法 Python3中,字符串全都用Unicode形式,所以省去了很多以前各种转换与声明的麻烦.字符串属于序列,所有序列可用的方法(比如切片等)都可用于字符串. 注意:字符串 ...

  2. Python语法速查:目录

    1. 数据类型与内置函数 2. 列表.元组.字典.集合操作 3. 字符串格式化 4. 字符串常用操作 5. 运算符.math模块.表达式 6. 循环与迭代 7. 函数基础 8. 类与对象 9. 函数进 ...

  3. Python语法速查: 13. 操作系统服务

    返回目录 本篇索引 (1)sys模块 (2)os模块 (3)与Windows相关模块 (4)subprocess模块 (5)signal模块 (1)sys模块 sys模块用于Python解释器及其环境 ...

  4. Python语法速查: 6. 循环与迭代

    返回目录 (1)while循环与for循环 while仅能用于普通循环,而for除了可以做循环外,还可以遍历序列.集合.字典.迭代器等. 需要注意的是,在类似:for i in somelist: 的 ...

  5. Python语法速查: 14. 测试与调优

    返回目录 本篇索引 (1)测试的基本概念 (2)doctest模块 (3)unittest模块 (4)调试器和pdb模块 (5)程序探查 (6)调优与优化 (1)测试的基本概念 对程序的各个部分建立测 ...

  6. Python语法速查: 1. 数据类型与内置函数

    返回目录 (1)常用内置数据类型 分类 类型名称 描述 数字 int 整数 float 浮点数 complex 复数 bool 布尔值 序列 str 字符串(不可变序列) list 列表 tuple ...

  7. Python语法速查: 15. 常用数据结构

    返回目录 本篇索引 (1)array (2)bisect (3)deque (4)defaultdict (5)namedtuple (6)heapq (7)itertools (1)array ar ...

  8. Python语法速查: 12. 文件与输入输出

    返回目录 (1)文件基本操作 ● 文件常用操作 内置函数或方法 描述 open(name [,mode [,buffering]]) 内置函数.用来打开文件,返回一个文件对象(file对象).详见下述 ...

  9. Python语法速查: 7. 函数基础

    返回目录 (1)函数基本 ● 函数是第一类对象 Python中万物皆对象,所有对象都是第一类的(first class),函数也不例外,也是第一类对象.既然是对象,那就可以当作普通的对象数据处理,比如 ...

随机推荐

  1. Mysql中处理JSON字段

    处理json字段,可以用json_extract函数: select * from (select json_extract(ext_value,'$.high')+0 highx,batch_id ...

  2. ElasticSearch 安装, 带视频

    疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 架构师成长+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 疯狂创客圈 高并 ...

  3. LeetCode 二叉树的锯齿形层次遍历

    第103题 给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 例如: 给定二叉树 [3,9,20,null,null,15,7] ...

  4. Flask 教程 第十章:邮件支持

    本文翻译自The Flask Mega-Tutorial Part X: Email Support 这是Flask Mega-Tutorial系列的第十部分,在其中我将告诉你,应用如何向你的用户发送 ...

  5. Jsf中进度条的用法

    Jsf中进度条的用法 前端页面 <!-- 进度条 --> <p:progressBar widgetVar="pbAjax" ajax="true&qu ...

  6. IntelliJ IDEA 2019.2.2同个项目运行多次的方法

    IntelliJ IDEA默认运行项目后,再点击运行就是重启,但有时候,需要配置项目的不同端口号,同时运行. 步骤如下: 1.点击IDEA右上角项目的隐藏下拉框,出现下拉列表,点击Edit Confi ...

  7. jeecg代码生成器配置及常见问题

    jeecg_database.properties 以mysql为例: diver_name=com.mysql.jdbc.Driver url=jdbc:mysql://192.168.*.*:33 ...

  8. Oracle - SPM固定执行计划

    1. 通过dbms_xplan.display_cursor查看指定sql都有哪些执行计划 SQL> select * from table(dbms_xplan.display_cursor( ...

  9. DSP程序中的布尔类型使用

    在DSP程序中,布尔类型不能直接拿来用,要定义一下,可以通过定义为枚举类型来定义: typedef enum{FALSE=0,TRUE} BOOL; 一般枚举类型的定义是这样的:enum [枚举名] ...

  10. Vm虚拟机最小化安装linux并配置NAT网络连接(全图)