python - 使用“is”来检查变量中包含哪个函数是个好主意吗?
问题描述
我有一个包含函数的变量。
def foo(x):
return x + 42
def bar(x):
return x - 42
my_var = foo
我想检查该功能是否是某个功能。我应该使用is
or==
吗?
my_var == foo
my_var == bar
和
my_var is foo
my_var is bar
两者都返回我的期望。
解决方案
对于函数对象,它们是相同的。==
操作员调用该函数__eq__
来执行比较。该function
对象没有定义__eq__
方法:
>>> def foo():
... pass
...
>>> foo.__eq__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'function' object has no attribute '__eq__'
因此解释器使用PyObject中的默认实现:
res = (v == w) ? Py_True : Py_False;
这基本上是一个指针比较,本质上与is
.
推荐阅读
- python - 用于监控 github repos 更改的 Python 看门狗
- ruby - 无法使用 Rails / Vue / Nginx / Puma 正确配置 WebSocket
- fonts - 热制作字体的粗体版本(.ttf / .otf 格式)
- amazon-web-services - 将 AWS ECS 与 EC2 实例结合使用时出现 CannotStartContainerError
- google-apps-script - 您如何通过 Google Apps 脚本访问 Google Sheets API?
- r - 使用给定的 beta0 和 beta1 对手动计算 RSS
- postgresql - 每行具有不同日期的 Postgres SQL 查询
- excel - 基于复选框的多选
- java - 无法在 Maven 项目中导入 JavaFX WebView
- python - 如何将列表作为值附加到数据框的特定列,其中所有其他列都将其值作为常量