原文:What Does // Mean in Python? Operators in Python,作者:Kolade Chris

在 Python 中,你使用双斜线 // 运算符来执行向下取整除。此 // 运算符将第一个数字除以第二个数字,并将结果向下舍入为最接近的整数。

在本文中,我将向你展示如何使用 // 运算符并将其与常规除法进行比较,以便你了解它是如何工作的。

但是不止这些——你还将了解与双斜线 // 运算符同义的 Python 数学方法。

我们将涵盖的内容

  • // 运算符的基本语法
  • 向下取整除示例
  • 双斜线 // 运算符的工作方式类似于 math.floor()
  • 双斜线 // 运算符如何在幕后工作
  • 小结

// 运算符的基本语法

要使用双斜线 // 运算符,你的操作几乎类似于常规除法。唯一的区别是,你使用双斜线 // 而不是单斜线 /

firstNum // secondNum

向下取整除示例

在下面的示例中,12 除以 5 得到 2:

num1 = 12
num2 = 5
num3 = num1 // num2

print("floor division of", num1, "by", num2, "=", num3)
# Output: floor division of 12 by 5 = 2

而 12 除以 5 的常规除法将等于 2.4。即 2 余 4:

num2 = 5
num3 = num1 / num2

print("normal division of", num1, "by", num2, "=", num3)
# Output: normal division of 12 by 5 = 2.4

这表明 // 运算符将两个数字相除的结果向下舍入到最接近的整数。

即使小数点为 9, // 运算符仍会将结果向下舍入到最接近的整数。

num1 = 29 
num2 = 10 
num3 = num1 / num2
num4 = num1 // num2

print("normal division of", num1, "by", num2, "=", num3)
print("but floor division of", num1, "by", num2, "=", num4)

"""
Output:
normal division of 29 by 10 = 2.9
but floor division of 29 by 10 = 2
"""

如果你用负数执行除法,结果仍然会向下取整。

为了让你为结果做好准备,向下舍入一个负数意味着远离 0。因此,-12 除以 5 得到 -3。不要混淆——尽管乍一看数字似乎越来越“大”,但实际上它越来越小(远离零/更大的负数)。

num1 = -12
num2 = 5
num3 = num1 // num2

print("floor division of", num1, "by", num2, "=", num3)

# floor division of -12 by 5 = -3

双斜线 // 的工作方式类似于 math.floor()

在 Python 中,math.floor() 将数字向下舍入到最接近的整数,就像双斜线 // 运算符所做的那样。

因此,math.floor()// 运算符的替代,因为它们在幕后做同样的事情。

这是一个例子:

import math

num1 = 12
num2 = 5
num3 = num1 // num2
num4 = math.floor(num1 / num2)

print("floor division of", num1, "by", num2, "=", num3)
print("math.floor of", num1, "divided by", num2, "=", num4)

"""
Output:
floor division of 12 by 5 = 2
math.floor of 12 divided by 5 = 2
"""

你可以看到 math.floor()// 操作符做同样的事情。

双斜线 // 运算符如何在幕后工作

当你使用 // 运算符将两个数字相除时,在后台调用的方法是 _floordiv__()

你也可以直接使用此 _floordiv__() 方法代替 // 运算符:

num1 = 12
num2 = 5
num3 = num1 // num2
num4 = num1.__floordiv__(num2)

print("floor division of", num1, "by", num2, "=", num3)
print("using the floordiv method gets us the same value of", num4)

"""
Output:
floor division of 12 by 5 = 2
using the floordiv method gets us the same value of 2
"""

小结

在本文中,你了解了如何使用双斜线 // 运算符以及它在幕后的工作原理。

此外,你还了解了 // 运算符的两种替代方法——math.floor()__floordiv__()方法。

不要对使用哪个感到困惑。你可以执行向下取整除的三种方式的工作方式相同。但是我建议你使用双斜线 // 运算符,因为你可以用它来减少输入。

感谢你阅读本文。