嘿,伙计们!,我们都知道,Python有一些大多数解释型语言所不具备的优点。其中一些是我们在做数学计算时用来执行的灵活概念。在这样做的时候,我们会对运算符和关键字产生一些困惑。现在,在这篇文章中,我们的目的是要弄清它们之间的区别。的是 和双倍等于的运算符。所以,让我们进入正题。
什么是Python中的运算符?
任何编程语言中的运算符都是基础知识背后的主要基本概念。 在Python中,有以下几种运算符:
- 逻辑运算:执行逻辑计算
- &: 和
- |: 或
- !: 不是
- 算术:执行基本的算术计算
- +: 加法
- -**:**乘法
- / : 除法
- %: modulo (返回余数)
- //: 地面除法运算(浮动除法返回整数值)
- 指数:计算数字的幂和XOR值
- **: 功率
- ^: XOR
让我们对这些概念进行编码并追踪其差异
现在,在这里我们将对这些关键字进行比较,并尝试追踪它们操作的差异。
==" 运算符
让我们以两个变量为例。这两个变量各自有不同的值。比如说a有20,b有30。现在,我们都知道,它们是不相等的。但是,计算机将如何识别这一点呢?为此,我们有一个双等号运算符。让我们举一个代码的例子。
代码
a = 30
b = 30
if a == b:
print(True)
else:
print(False)
输出
这里我们可以说明,等价的主要功能是检查数值是否相同。对于一个复杂的例子,我们也可以用函数来检查。
检查一个数字的平方根的代码
from math import sqrt
def square_root(val):
return (val**(1/2))
a = sqrt(9)
b = square_root(9)
print(a == b)
输出
这里我们比较两个函数返回的值。它们返回的值是一样的,但是,在解释器中对两者的识别是不同的。
print(id(a))
print(id(b))
输出
2178644181968
2178644086384
这里的双倍等于运算符显示了不同的性质。当我们比较它们的身份时,它将返回错误。它返回错误,所以为了解决这个问题,我们使用 "是 "运算符。
关键字 is
这个关键字用于数值的比较,也用于对象的引用。当我们创建任何类的对象时,它是持有每个类的属性的实例。对于每一个新创建的对象,解释器都会为其分配新的身份。
以数字为例
a = 10
b = 10.0
print(a is b)
输出
我们可以看到,两个数字都是10,但一个是浮点数,另一个是整数。所以,让数值看起来相似,对象类型可以不同。
数据结构的例子
在这个例子中,我们有两个列表a和b,它们都包含相同的元素值。但是,当我们试图用 **"是 "**关键字来比较它们时,输出结果是令人惊讶的。
a = [1, 2, 3, 4, 5]
b = [1, 2, 3, 4, 5]
print(type(a))
print(type(b))
if (a is b):
print("Successful")
else:
print("Unsuccessful")
输出
<class 'list'>
<class 'list'>
False
解释
- 两个列表都有相同的类,即<class "list">。
- 但是,主要问题是分配给l1的内存块与l1的内存块不同。
- is操作符检查我们创建的对象的内存位置。
- 每个对象的内存块的分配是不同的。这使得is返回False值。
例如,用一个NumPy数组
代码
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[1, 2], [3, 4]])
print(a is b)
输出
同样,NumPy数组也是如此。两个数组都是一样的,但是,分配给它们的内存是不同的。它们的ID是不同的。所以,我们得到的是False。
例如,对于一个类
class temp_1():
def __init__(self, a, b):
self.a = a
self.b = b
def print_val(self):
print(self.a, self.b)
class temp_2():
def __init__(self, a, b):
self.a = a
self.b = b
def print_val(self):
print(self.a, self.b)
obj1 = temp_1(30, 40)
obj2 = temp_2(30, 40)
obj1.print_val()
obj2.print_val()
print((obj1 is obj2))
解释。
这两个类都有相同的属性,相同的功能以及相同的参数。值得注意的是,通过内存引用,它们是不一样的。所以,通过这个代码实验的结论是。为了使代码的可测试性更有效,关键字比**==**运算符更有用。
总结
双重等于只检查值,但对值和引用都进行检查。所以,这篇文章向我们讲述了Python中 "is "和"=="的区别,以及我们如何在Python编程中有效地使用这两个概念,使我们的代码更加健壮。