返回目录

本篇索引

(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. android上如何写配置文件

    android上如何写配置文件:使用SharedPreferences SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,比如Activity状态 ...

  2. Vue初始化过程

    用vue也有一两年了,始终对vue一知半解,不怎么了解内部的执行过程,最近在看vue源码,还是不少收获的,其中不乏浏览器事件轮询机制.闭包.设计模式等,还是非常值得一读.本篇简要记录下vue的初始化过 ...

  3. angular cli http请求封装+拦截器配置+ 接口配置文件

    内容:接口配置文件.http请求封装 .拦截器验证登录 1.接口配置文件 app.api.ts import { Component, OnInit } from '@angular/core'; / ...

  4. 编译原理之非确定的自动机NFA确定化为DFA

    1.设有 NFA M=( {0,1,2,3}, {a,b},f,0,{3} ),其中 f(0,a)={0,1}  f(0,b)={0}  f(1,b)={2}  f(2,b)={3} 画出状态转换矩阵 ...

  5. i2c中start和restart的区别【转】

    有的硬件芯片提供了一个个寄存器,供我们很好的操作i2c,但是,在用的时候,我们是不知道他到地是怎么操作的,下边,我就探讨下i2c中的start和restart的区别. start是在scl是高电平的时 ...

  6. React每隔0.2s颜色变淡 之settimeOut变成setInterval

    案例 每隔0.2s颜色变淡 公共数据是放在state中的哦! 代码如下 import React, { Component } from "react"; import { set ...

  7. Java大数类 BigInteger

    package bigint; /** * This class encapsulates a BigInteger, i.e. a positive or negative integer * wi ...

  8. jenkins构建,拉取不到最新版本代码,报clock of the subversion server appears to be out of sync

    一.问题描述 今天遇到个问题,我这边提交了代码后,一般会马上去jenkins上点一下,构建到开发环境上. 但是发现修改没生效,后来发现,提交的版本假设是3250,但是jenkins构建使用的版本为32 ...

  9. jquery使用on()方法绑定的事件被执行多次的问题

    jQuery用on()方法绑定了事件之后,在代码执行过程中,可能会遇到事件被多次执行的情况. 本来以为是事件冒泡的问题,后来发现是on()方法的特性引起的问题. 简单还原一下问题的场景 这里简单还原一 ...

  10. 可能是最详细的UMD模块入门指南

    学习UMD 介绍 这个仓库记录了一些关于javascript UMD模块规范的demo,对我学习UMD规范有了很大帮助,希望也能帮助到你. 回顾 之前也写了几篇关于javascript模块的博客,链接 ...