【问题标题】:is the 'is' keyword in python a function?python中的'is'关键字是一个函数吗?
【发布时间】:2019-08-22 22:46:28
【问题描述】:

我试图了解 Python 中的“is”关键字属于什么定义。

在我正在学习的课程中,讲师非常强调函数和方法(类函数)之间的区别。 当被问到时,讲师说它是一个函数,并引用我 Python 的 Operator 类和它的 'is_' 方法(这只是一种允许轻松使用运算符的方法,甚至没有提到的关键字)。

a is b
operator.is_(a,b)

我发现自己正在为得到的答案而苦苦挣扎。 如果您可以根据我的讲师对功能和方法的强调,解释“是”是否属于其中任何一个,我将不胜感激。 如果不是,那么正确的查看方式是什么?

【问题讨论】:

  • 关键字不是函数。它们也不是方法。
  • operator 是一个模块,而不是一个类。而operator.is_ 是一个函数,而不是一个方法。
  • operator.is_() 模块中有一个operator.is_() 函数。注意is_ 后面的下划线,它可以防止它被解释为关键字。

标签: python python-2.7 function methods operator-keyword


【解决方案1】:
  • is(如a is b)是一个运算符。具体来说,二元运算符 - 因为它需要两个对象(示例中为 ab)作为输入。

    运算符与函数的不同之处在于语法——两个操作数位于运算符的两侧。如果is 是一个函数,它会像is(a, b) 一样被调用。

  • operator.is_ 是一个函数,它接受两个参数(我们称它们为ab)作为输入并返回a is b。它是is 运算符的功能等效。 (documentation of the operator module 甚至被命名为“标准运算符即函数”。)

    此外,operator.is_ 不是一种方法。 operator 是一个模块,而不是一个类,is_ 是该模块中定义的一个函数。

【解决方案2】:

is 运算符检查两个操作数是否引用同一个对象。它比较身份。 而== 比较两个操作数的值并检查值是否相等。它通过检查是否相等来进行比较。

下面是一个简单的例子:

# [] is an empty list

list1 = [] 
list2 = [] 
list3 = list1 

if (list1 == list2): 
    print("True") 
else: 
    print("False")

if (list1 is list2): 
    print("True") 
else: 
    print("False") 

if (list1 is list3): 
    print("True") 
else:     
    print("False")

输出应如下所示:

True
False
True
  • 在您提供的示例中:
  • a is b 中,is操作员
  • operator.is()
  • operator 是一个模块
  • is()operator 模块中定义的函数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-05
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    • 2014-08-13
    • 2014-09-16
    • 2020-02-05
    相关资源
    最近更新 更多