Python3中**与*、/与//运算符的区别及优先级详解

唐可
唐可
发布时间:2026-10-15 | 4人浏览过
原创

本文详解Python3中**与*、/与//运算符的区别。**为幂运算,*为乘法,大数计算时**可能溢出而*返回inf;/为真除法返回float,//为地板除取整。同时梳理了赋值、比较、逻辑、位及三元运算符的优先级,幂运算最高,三元最低。

在Python中,**运算符用于表示次方运算。

具体示例如下。


>>>12 * 12
144
>>>12 ** 2
144


>>>a=1e200
>>> a
1e+200
>>>a ** 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OverflowError: (34, 'Result too large')
>>>a * a
inf
>>>a = 100 ** 100  # python3中int整型一般不会溢出,取决于内存
100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
>>>a * a,a ** 2   # 两种方式都没问题,int很大,不会溢出,取决于内存
(10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)
>>>float(a) * float(a)    #float用这种方法,也不会溢出
inf
>>>float(a) ** 2  #float用这种方式有可能溢出,注意!!!
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OverflowError: (34, 'Result too large')

补充说明:在Python3.8版本中,/和//运算符存在明显区别。

参考以下两张截图进行对比。

执行5/5的结果为1.0,而5//5的结果为1。

执行6.0/5.0的结果为1.2,而6.0//5.0的结果为1.0。

由此可见,使用/运算符时,即使两个参数均为int类型,返回值依然是float类型;而//运算符只有在参数中包含float时,返回值才是float类型,但其结果会进行取整处理。

/和//的主要区别总结如下。

//运算符的结果是向下取整(floor),而/运算符会保留小数位。

补充:Python3中各类运算符及其优先级顺序如下。

1. 基础算术运算符:

+(加)、-(减)、*(乘)、/(真除法)、%(取模)、//(地板除)、**(幂运算)。

2. 赋值运算符:

=

3. 增强型赋值运算符:

+= -= *= /= %= **= //=

a+=1(运行效率较高)。

a=a+1(运行效率相对较低)。

4. 布尔比较运算符:

== > < >= <= !=

支持连续判断语法:

3>2>1

返回True。

3>2 and 2>1

返回True。

5. 逻辑运算符:

not、and、or的优先级顺序为:

not优先级最高。

and次之。

or优先级最低。

6. 位运算符:

位是指二进制表示中的每一位。

<<和>>为移位运算符。

&用于逻辑按位与运算。

|用于逻辑按位或运算。

~用于逻辑按位非运算。

^用于逻辑按位异或运算。

7. 三元运算符:

语法格式为:变量 = (值1 if 布尔表达式 else 值2)。

如果布尔表达式为真,则返回值1;否则返回值2。

在各类运算符中,三元运算符的优先级最低。

1. 运算顺序遵循先乘除后加减的原则。

2. 幂运算(**)的优先级最高。

3. 三元运算符的优先级最低。

4. 运算符的元数越少,优先级越高。

幂运算属于一元运算符。

5. 优先级从高到低排列如下:

幂运算(**)。

正负号(+/-)。

算术运算符(*、/、%、//)。

比较运算符(<、>、<=、>=)。

逻辑运算符(not、and、or)。

以上为个人经验分享,希望能给大家一个参考,也希望大家多多支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表