精华内容
下载资源
问答
  • Python 运算符优先级

    2021-03-07 09:49:07
    整理自《Python学习手册 第五版》147p 优先级从上至下,依此增加 运算符 描述 yield , lambda 函数组成部分 x if y else z 三元表达式 x or y , x and y 逻辑与,逻辑非 not x 逻辑或(一元表达式) ...

    官方参考手册 6.17

    在这里插入图片描述

    import numpy as np
    
    a = np.array([[1,2],[3,4]])
    b = np.array([5,6])
    c = np.array([[5,6],[7,8]])
    
    a@b
    Out[94]: array([17, 39])
    

    运算符:

    +	-	*	**	/	//	%	@	<<	>>	&	
    +	|	^	~	:=	<	>	<=	>=	==	!=	
    

    分隔符:

    (	)	[	]	{	}	,	:	.	;	@	
    =	->	+=	-=	*=	/=	//=	%=	@=	&=	|=	
    ^=	>>=	<<=	**=	
    

    以下 ASCII 字符具有特殊含义,对词法分析器有重要意义:

    '	"	#	\
    

    以下 ASCII 字符不用于 Python。在字符串字面值或注释外使用时,将直接报错:

    $	?	`
    

    之前内容

    整理自《Python学习手册 第五版》147p
    优先级从上至下,依此增加

    运算符 描述
    yield , lambda 函数语句
    x if y else z 三元表达式
    x or y 逻辑或
    x and y 逻辑与
    not x 逻辑非(一元表达式)
    x in y , x not in y
    x is y , x is not y
    x<y , x<=y , x>y , x>=y , x==y , x!=y
    成员关系,y是容器,x不能是表达式
    对象同一性测试,x、y不能是表达式
    大小比较、集合的子集和超集,值等价性运算符
    x|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:k] , x(…) , x.attr 索引;分片;调用;属性引用
    (…) , […] , {…} 括号、推导式、字面量

    (...) 当作括号时,是强制优先级,返回主表达式一个括号内表达式的运算结果的数值

    总的来说,一般情况下,幂运算有最高的优先级,其次是一元表达式,乘除,加减,位,比较,逻辑,三元表达式,函数

    而容器是特殊情况,容器也不能直接拿来运算,除了拼接和重复,容器类似于一元表达式。而拼接和重复类似于二元表达式

    一元表达式:一般情况下,若一元表达式非优先级,整个式子都无法解析
    例如 1 or not 1,或是not 1 or 1,其实可以理解为or和not是同级优先级的,但是就是必须给not一个安居之所

    所以not、+、-等一元表达式下,必须看作和后面的数值是一体的

    is和in与比较运算符是同一级别的,但注意使用场合的意义

    其实最不习惯的就是很少用到的位运算,在Python中,每一个位运算不与其他位运算同一优先级:取反、位移、与、异或、或

    关于 or 和 and 之间的优先级

    已经确定and的优先级大于or,这是之前搞错的问题,幸亏在论坛里问了下!

     1 or 0  and 0  =  1
    (1 or 0) and 0  =  0
    

    大佬让我看看这个是怎么回事!

    以下是之前的错误的思路,大家可以找找茬!

    错误思路

    我发完文章后,看到推荐中提到这类文章,关键是not>and>or映入眼帘,而这个之前我也很难验证,但当时确定or和and是同级的关系,于是这次我再验证!

    In [1]: l=[]
    
    In [2]: def f1():
       ...:     l.append(1)
       ...:     return 1
       ...:
    
    In [3]: def f0():
       ...:     l.append(0)
       ...:     return 0
       ...:
    
    In [4]: f1() or f0() and f0()
    Out[4]: 1
    
    In [5]: l
    Out[5]: [1]
    
    In [6]: l=[]
       ...: f1() and f0() or f1() and f1()
    Out[6]: 1
    
    In [7]:
    
    In [7]: l
    Out[7]: [1, 0, 1, 1]
    
    In [8]: l=[]
       ...: f1() and f0() or f0() and f1()
    Out[8]: 0
    
    In [9]: l
    Out[9]: [1, 0, 0]
    

    网上多篇文章以1 or 0 and 0举例,于是我就照着这个例子去尝试。
    我的观点是,or and同级,但有截断效应,例如这个表达式,当or之前的结果是1,就会截断,不再运行后面的结果,是顺序+截断机制

    另一种截断演示:

    In [107]: f0() and f0() and f0() and f0() or f0() or f1() and f0() and f1()
    Out[107]: 0
    
    In [108]: l
    Out[108]: [0, 0, 1, 0]
    

    为了方便理解,这里改写为:
    01 and1 02 and2 03 and3 04 or1 05 or2 10 and4 0 and5 11
    开始的值是0,与and搭配产生截断效应,意思是,只要0+and,后面的结果不用看,表达式结果就是0,于是这一串的截断,忽略and后面的数值,所以掠过了02、03、04,直到遇到or1,察觉or1后面的值需要试一下,于是运算了05,1+or才是截断,于是继续运算,于得并运算了10,此时的表达式等同于:1 and 0 and 1,1+and没有触发截断,需要看and后面的数值,是0,1 and 0,结果是0,0 and 1,但是0+and触发截断,所以略过后面的1,此时表达式结束,于是返回结果是0,取了四次数值:0,0,1,0。大家对应一下!

    总结,在以上表达式中,解释器从左到右顺序的看了每一个运算符,但是因为截断效应,并没有看部分被截断的数值!

    正确思路

    上述有一点是正确的,无论怎样,解释器会遍历所有的操作符并规划运算单元,此后依序运算每个子表达式,但是一些数值没必要去运算时,还是会略过的,于是:

    In [4]: f1() or f0() and f0()
    Out[4]: 1
    
    In [5]: l
    Out[5]: [1]
    

    正确理解:
    x,y,z=1,0,0
    x or y and z
    首先遍历操作符,确定优先级:
    x or (y and z)
    但是仅仅是先算括号里面的and,再把其数值与x进行or运算
    但是在此之前,会先看x的数值,此时,x是1,所以已经没有必要算括号里面的表达式了!

    In [6]: l=[]
       ...: f1() and f0() or f1() and f1()
    Out[6]: 1
    
    In [7]: l
    Out[7]: [1, 0, 1, 1]
    
    In [8]: l=[]
       ...: f1() and f0() or f0() and f1()
    Out[8]: 0
    
    In [9]: l
    Out[9]: [1, 0, 0]
    
    In [15]: l=[]
        ...: f0() or f1() and f1() and f0() and f0()
    Out[15]: 0
    
    In [16]: l
    Out[16]: [0, 1, 1, 0]
    
    In [18]: l=[]
        ...: f0() or f1() and f1() and f0() and f0() or f1() and f1()
    Out[18]: 1
    
    In [19]: l
    Out[19]: [0, 1, 1, 0, 1, 1]
    

    0 or 1 and 1 and 0 and 0
    =>
    0 or (((1 and 1) and 0) and 0)

    展开全文
  • 问题:Python运算符号的优先级是什么? 答案:乘方>>乘除、取余、取整>>加减 举例:结果是2(先计算**,然后乘除余整,最后加减)
    • 问题:Python运算符号的优先级是什么?
    • 答案:算数>>比较>>成员>>逻辑
      • 算数运算符:乘方(**)>>乘除、取余(%)、取整(//)>>加减
      • 比较运算符: > ,< ,>=,<=,!= ,==   无优先级之分
      • 成员运算符:in, not in  无优先级之分
      • 逻辑运算符:not>>and>>or 
    • 注意:不等于符号中,英文状态"!"可以中文状态"!"不行。

    • 举例:结果是2(先计算**,然后乘除余整,最后加减)

    展开全文
  • 二、运算符优先级 一般的的运算符优先级:从左到右顺序。 优先级从高到低: 1、圆括号() 2、幂运算符** 3、负号- 4、乘* 除 / 整除// 取余 % 5、加+ 减- 了解运算符的优先级以后,我们可以在复杂的条件判断和数学...

    知识回顾:

    1、变量声明。学会变量的定义和使用,理解赋值的真正含义。

    2、变量名称。变量名称不能随便命令,要避免系统关键字,要遵守变量的命名规则,使用驼峰式命名法。

    本节知识视频教程

    以下开始文字讲解:

    一、补充//的作用

    //用来取整,指的是获取除法后的结果的整数部分。温馨提示:还有一个获取整数部分的函数int(),这个函数在将浮点数转换后返回一个整数部分。

    %用来取余,指的是获取除法后的结果的余数部分。

    /用于做除法,结果是一个实际的除法结果值,如果是有小数的,就会返回一个小数。

    二、运算符优先级

    一般的的运算符优先级:从左到右顺序。

    优先级从高到低:

    1、圆括号()

    2、幂运算符**

    3、负号-

    4、乘* 除 / 整除// 取余 %

    5、加+ 减-

    了解运算符的优先级以后,我们可以在复杂的条件判断和数学计算的过程中,使得我们的计算和判断更加准确。

    三、总结强调

    1、掌握//与/与%的区别。

    2、掌握各个运算符优先级。

    运算符举例:

    (10//3%2)=1

    (10//3%2)*2=2

    (-1+3-(10//3%2)*2)=0

    2**2+(-1+3-(10//3%2)*2)=4+0=4

    展开全文
  • python运算符优先级

    2019-06-11 17:45:41
    运算符用于对数据的变换 算术运算符 https://blog.csdn.net/GrofChen/article/details/89320967 赋值运算符 https://blog.csdn.net/GrofChen/article/details/91374429 比较运算符 ...逻辑...

    运算符用于对数据的变换
    运算符优先级

    运算符 说明
    ** 指数(最高优先级)
    ~ ± 按位翻转
    * / % // 乘除,取模取整
    + - 加减
    >> << 右左移运算符
    & 按位与
    ^ l 位运算符
    <= <> >= 比较运算符
    == != 等于运算符
    = %= /= //= -= += *= **= 赋值运算符
    is is not 成员运算符
    or and 逻辑运算符

    算术运算符
    https://blog.csdn.net/GrofChen/article/details/89320967
    赋值运算符
    https://blog.csdn.net/GrofChen/article/details/91374429
    比较运算符
    https://blog.csdn.net/GrofChen/article/details/91374464
    逻辑运算符
    https://blog.csdn.net/GrofChen/article/details/91374499
    成员运算符
    https://blog.csdn.net/GrofChen/article/details/91374543
    位运算符
    https://blog.csdn.net/GrofChen/article/details/91374573

    展开全文
  • 1. 第四章 运算符与表达式本章的主题是 Python 语言的内建运算符及表达式求值的优先级。1.1. 数值操作所有数值类型都提供下列运算:运算 描述x + y 加x - y 减x * y 乘x / y 常规除x //...
  • 导读:运算这一概念起源于数学,即通过运算法使参与运算的元素得出...Python提供了算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、身份运算符和成员运算符7类运算符,从而实现了丰富多样的运算功能。...
  • Python中有三种字符串格式化的方式: %,是一种传统的方式。 format,升级版。(建议) f,【Python3.6及以后】 1.1 % 1.1.1 %s 充当占位符,一般情况下是占字符串类型 # 方式1 tpl = "我的名字叫%s,我是一个帅...
  • Python算术运算符2.1加法(+)运算符m = 10n = 97sum1 = m + nx = 7.2y = 15.3sum2 = x + yprint("sum1=%d, sum2=%.2f" % (sum1, sum2) )运行结果: sum1=107, sum2=22.50拼接字符串当+用于数字时表示加法,但是当+...
  • 导读:运算这一概念起源于数学,即通过运算法使参与运算的元素得出确定且可重复...Python提供了算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、身份运算符和成员运算符7类运算符,从而实现了丰富多样的...
  • 简单总结C语言中的运算符优先级C语言中有很多运算符,除了四则运算,还有位运算、比较运算、逻辑运算、赋值运算等等,令人眼花缭乱的同时,优先级也让人头疼。通常建议在写代码的时候不用省略括号,但是并不是所有...
  • 一、Python中的运算符包括:算术运算符赋值运算符比较运算符布尔运算符运算符其中算术运算符包含:标准算术运算符,取余运算符(%)、幂运算符(**)标准运算符包括:加(+)、减(-)、乘(*)、/、整除(//)1、...
  • Python语言支持以下...8`运算符优先级 什么是运算符?举例如下: 4+5=9 例子中,4和5被称为操作数,中间的"+"被称为运算符。 算术运算符: + 加:两个对象相加——a + b 输出结果 31 - 减: 得到负
  • Python运算符

    2019-03-20 17:13:07
    确保对模块,函数,方法和行内注释使用正确的风格 Python中的注释有单行注释和多行注释。 单行注释以#开头 多行以三个单引号'''或者 三个双引号" " "将注释括起来。 什么是运算符?...运算符优先级 算...
  • 导读:运算这一概念起源于数学,即通过运算法使参与运算的元素得出确定且可重复的...Python提供了算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、身份运算符和成员运算符7类运算符,从而实现了丰富多...
  • 运算这一概念起源于数学,即通过运算法使参与运算的元素得出确定且...Python提供了算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、身份运算符和成员运算符7类运算符,从而实现了丰富多样的运算功能。 ...
  • python运算符

    2019-06-04 21:11:34
    3.数学中的运算符优先级是一致的 先乘除后加减 同级的从左到右计算 可以使用“()”调整计算的优先级 第一级:** 第二级:*,/,%,// 第三级:+,- 4.python中,*运算符可以用于字符串中,计算结果就是字符...
  • Python 运算符

    2019-06-04 15:21:47
    运算符 一. 算数运算符 1.算术运算符可以直接对数字进行运算 ...3.数学中的运算符优先级是一致的 先乘除后加减 同级的从左到右计算 可以使用“()”调整计算的优先级 第一级:** 第二级:*,/,%,// 第三级:+,- 4...
  • 运算符: ** 1> 算术运算符:+ - * / %(取余) //(取整) **(几次方) print(“5+6”) print(5+6) print(4.3-2) print(4*6) print(10/3) print(10%3) # 取余数 print(10//3) # 取整数 print(3**3) # 计算3的3次方 ...
  • Python 运算符和表达式

    2020-08-04 09:18:59
    Python 中的运算符主要包括算术运算符、赋值运算符、比较运算符、逻辑运算符和位运算符。使用运算符将不同类型的数据按照一定的规则连接起来的式子,称之为表达式。下面我们学习一下最常用的一些运算符。 算术...
  • Python运算符汇总

    2019-03-30 17:12:16
    文章目录逻辑运算符关系运算符测试运算符运算符运算优先级 逻辑运算符 and ,or ,not 逻辑运算符and、or、not常用来连接条件表达式构成更加复杂的条件表达式,并且and和or具有懒惰求值或逻辑短路的特点,当连接...
  • 运算这一概念起源于数学,即通过运算法使参与运算的元素得出...Python提供了算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、身份运算符和成员运算符7类运算符,从而实现了丰富多样的运算功能。成长离...
  • 本篇文章主要介绍python的位运算符、成员运算符和身份运算符,以及python运算符优先级。 若想了解python的算数运算符、比较运算符、逻辑运算符和赋值运算符请查看上一篇文章——python的运算符(上) 位运算符 位...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,205
精华内容 882
关键字:

python运算符优先级举例

python 订阅