返回目录

本篇索引

(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. 基于H7的串口WIFI模块ESP8266的TCP客户端例子和操作说明(AP兼STA模式)

    说明: 1.如果不熟悉网络的话,等我这几天更新V7用户手册的ESP8266章节,如果熟悉的话,直接操作即可,这里将操作说明发出来. 2.串口WIFI是采用的AT指令操作,简单易用,指令手册在这个帖子里 ...

  2. Mysql 的异常:The last packet successfully received from the server was 90 milliseconds ago. The last packet sent successfully to the server was 43,603,303 milliseconds ago. is longer than the server con

    调试一个程序, 调试到一半, 下班回家, 程序卡在了某一行, 第二天早上回来一看, 发现了异常: Wed Sep :: GMT+: WARN: Establishing SSL connection ...

  3. Leetcode题解 - DFS部分题目代码+思路(756、1034、1110、491、721、988)

    756. 金字塔转换矩阵 """ 学到的新知识: from collections import defaultditc可以帮我们初始化字典,不至于取到某个不存在的值的时 ...

  4. telerik reporting 在.net core api 使用

    工具要求:telerik reporting R3 2019..net core 2.2  .vs2017 最新版 从官网下载下来的的telerik reporting 的.net core  例子是 ...

  5. 小程序如何实现rem

    最近在学习小程序,要把html的代码转换成小程序界面,其中就遇到了rem的转换问题,但小程序不太兼容rem,不是不能用rem,而是没办法设置根元素的font-size,因为rem是相对于根元素的fon ...

  6. How to: Specify a Display Member (for a Lookup Editor, Detail Form Caption, etc.)如何:指定显示成员(用于查找编辑器、详细信息表单标题等)

    Each business object used in an XAF application should have a default property. The default property ...

  7. 从0系统学Android--3.7 聊天界面编写

    从0系统学Android--3.7 聊天界面编写 本系列文章目录:更多精品文章分类 本系列持续更新中.... 3.7 编写界面的最佳实践 前面学习了那么多 UI 开发的知识,下面来进行实践,做一个美观 ...

  8. PHP 利用PHPExcel到处数据到Excel;还有导出数据乱码的解决方案。

    直接贴代码吧 PHP版本5.6.38 mysql版本5.0 //连接数据库 $mysql_server_name = "*.*.*.*"; $mysql_username=&quo ...

  9. 日常工作中VBA代码积累

    1.超链接地址提取 Function GetURL(rng As Range) As String On Error Resume Next GetURL = rng.Hyperlinks(1).Ad ...

  10. RSA加解密&RSA加验签详解

    RSA 加密算法是目前最有影响力的 公钥加密算法,并且被普遍认为是目前 最优秀的公钥方案 之一.RSA 是第一个能同时用于 加密 和 数字签名 的算法,它能够 抵抗 到目前为止已知的 所有密码攻击,已 ...