返回目录

本篇索引

(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. 东芝开发板驱动OLED模块显示LOGO图片

    前言 在之前的两篇评测文章: 使用系统定时器SysTick实现精确延时微秒和毫秒函数 东芝MCU实现位带操作 介绍了系统SysTick实现精确延时,GPIO的输入输出使用,并实现了位带方式操作GPIO ...

  2. Oracle GoldenGate常用参数详解

    Oracle GoldenGate常用参数详解http://blog.itpub.net/28389881/viewspace-2564461/

  3. EasyExcel示例(阿里巴巴)基于Maven

    首先感谢阿里巴巴提供了easyexcel工具类,github地址:https://github.com/alibaba/easyexcel 注意!!这里只是一个简单的示例,VC大法即可使用,对于复杂的 ...

  4. [Go] 利用函数类型实现封装中的回调

    当进行业务逻辑开发的时候,经常要进行封装,封装成独立的类文件,在类文件的属性中预留出函数类型的API 在调用该类文件中某些方法的时候,也根据业务需要调用类属性中的函数, 在主业务中可以传递特定的函数注 ...

  5. [Go] golang定时器的使用

    golang中的定时器是使用的chanel阻塞来实现的,主要使用到了time包中的内容,如果有多个定时器的channel,为了防止阻塞,可以使用select来获取遍历channel 定时器获取的cha ...

  6. 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU启动那些事(2)- Boot配置(BOOT Pin/eFUSE)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列MCU的Boot配置. 在上一篇文章 Boot简介 里痞子衡为大家介绍了Boot基本原理以及i.MXR ...

  7. August 11th, 2019. Week 33rd, Sunday

    Worry does not empty tomorrow of its sorrow. It empties today of its strength. 忧虑不会消除明天的痛苦,它只会削弱今天的力 ...

  8. git版本对比

    1.git diff版本比对 (未添加到暂存区间之前的区别对比) 未进行修改,则显示为空 进行文件修改,再执行git diff 当执行git add .  之后,再次git diff则为空 缓存和提交 ...

  9. linux/kali安装及更新源以及输入法等配置

    准备工作1.kali 镜像的下载,官网选择对应的版本下载https://www.kali.org/downloads/ 2.VMware的安装,同官网可下载 更新源总结#更新源gedit /etc/a ...

  10. Java死锁演示

    Java死锁演示 在线程中嵌套获取锁导致死锁.思路,尽量不要嵌套获取锁. package com.mozq.demo.demo; public class DeadLockDemo { private ...