相关疑难解决方法(0)

如何在Python中连接两个列表?

如何在Python中连接两个列表?

例:

listone = [1, 2, 3]
listtwo = [4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

预期结果:

>>> joinedlist
[1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

python list concatenation

2250
推荐指数
26
解决办法
220万
查看次数

什么是蟒蛇中的Truthy和Falsy?它与真与假有什么不同?

我刚刚才知道有TruthyFalsy在Python这是与正常不同的价值观TrueFalse

是否有人可以深入解释什么truthyfalsy值?

我应该在哪里使用它们?

truthyTrue值以及falsyFalse值之间有什么区别?

python

92
推荐指数
4
解决办法
3万
查看次数

为什么NotImplemented评估为True?

我最近偶然发现了Python的NotImplemented内置.经过一些阅读后,我确实得到了它的目的,但我不明白它为什么评估True为布尔值.下面的例子让我觉得这是一种残酷的玩笑:

>>> class A:
...     def __eq__(self, other):
...         return NotImplemented
... 
>>> 
>>> a = A()
>>> a == 1
False
>>> bool(a.__eq__(1))
True
Run Code Online (Sandbox Code Playgroud)

我的问题很简单:为什么要NotImplemented评价True

python

6
推荐指数
1
解决办法
388
查看次数

为什么Python 3中的NotImplemented truthy?

这个问题的答案和讨论刺激了这个问题.以下代码段显示了问题的关键:

>>> bool(NotImplemented)
True
Run Code Online (Sandbox Code Playgroud)

我的问题如下:

  1. 为什么决定bool价值NotImplemented应该是True?它感觉是unpythonic.
  2. 我没有意识到有充分的理由吗?文档似乎只是说,"因为它是".
  3. 有没有以合理的方式使用它的例子?

推理为什么我认为它不直观(请忽略缺乏最佳实践):

>>> class A:
...     def something(self):
...         return NotImplemented
...
>>> a = A()
>>> a.something()
NotImplemented
>>> if a.something():
...     print("this is unintuitive")
...
this is unintuitive
Run Code Online (Sandbox Code Playgroud)

具有如此负面含义(缺乏实施)的东西似乎是一种奇怪的行为.

相关文字来自:

未实现

这应该由二进制特殊的方法被返回(如特殊的值__eq__(),__lt__(),__add__(),__rsub__(),等等),以指示该操作不相对于另一种类型的实施; 可通过就地二进制特殊的方法(例如被返回__imul__(),__iand__()为了相同的目的,等等).它的真实价值是真实的.

- 来自Python Docs

编辑1

为了澄清我的立场,我觉得NotImplemented能够评估一个布尔值本身就是一种反模式.我觉得Exception更有意义,但流行的想法是在评估不同对象之间的比较时,出于性能原因选择常量单例.我想我正在寻找令人信服的理由,为什么这是选择的"方式".

python boolean python-3.x truthiness

5
推荐指数
1
解决办法
185
查看次数

标签 统计

python ×4

boolean ×1

concatenation ×1

list ×1

python-3.x ×1

truthiness ×1