在Python 2.6中查看Queue.py时,我发现这个结构有点奇怪:
def full(self):
"""Return True if the queue is full, False otherwise
(not reliable!)."""
self.mutex.acquire()
n = 0 < self.maxsize == self._qsize()
self.mutex.release()
return n
如果maxsize
为0,则队列永远不会满。
我的问题是在这种情况下如何运作? 0 < 0 == 0
如何被认为是错误的?
>>> 0 < 0 == 0
False
>>> (0) < (0 == 0)
True
>>> (0 < 0) == 0
True
>>> 0 < (0 == 0)
True
参考方案
我相信Python对关系运算符的序列有特殊的处理方式,以使范围比较易于表达。能够说0 < x <= 5
比说(0 < x) and (x <= 5)
好得多。
这些称为chained comparisons。这是他们文档的链接。
在您谈论的其他情况下,括号会强制在一个关系运算符之前应用一个关系运算符,因此它们不再是链式比较。由于True
和False
的值均为整数,因此您可以从括号中得到答案。
我正在使用python pandas处理一些数据。我已使用以下代码将数据导出到excel文件。writer = pd.ExcelWriter('Data.xlsx'); wrong_data.to_excel(writer,"Names which are wrong", index = False); writer.…
Python numpy数据指针地址无需更改即可更改 - python编辑经过一些摆弄之后,到目前为止,我已经隔离了以下状态:一维数组在直接输入变量时提供两个不同的地址,而在使用print()时仅提供一个地址2D数组(或矩阵)在直接输入变量时提供三个不同的地址,在使用print()时提供两个地址3D数组在直接输入变量时提供两个不同的地址,而在使用print()时仅给出一个(显然与一维数组相同)像这样:>>> …
Python lmfit约束:a <b <c - python我在Python中使用lmfit来拟合一些数据,其中包括拟合变量a,b和c。我需要确保a <b <c。我发现http://cars9.uchicago.edu/software/python/lmfit_MinimizerResult/constraints.html谈到需要定义为不等式和设置虚拟变量的约束。例如,如果我想要a + b <=…
创建XML内联xmlns - python我正在使用lxml创建XML输出的Python中工作,最终项目将需要将xml导入Strava,因此在导入之前需要正确的模式。下面是我创建的模式,我的问题是,如果我包含如下所示的XMLNS文本,我似乎无法正确设置格式。<Extensions> <TPX xmlns="http://www.garmin.com/xmlschemas/…
Python sqlite3数据库已锁定 - python我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…