A gotcha with *if* in Python

Jesse 发表于 2008-06-12 17:44:56

(1).
I was to compare two tuples:
if tuple1 > tuple2:
    ....

(2).
But these tuples contained expressions as elements, say, tuple1 = (a,b), tuple2 = (s,t); b and t were quite long.
(3).
So I wrote the above code as following since it can't fit in one single line.
if (a, b >
      s, t):
    ....

Then the monster came, things always went wrong and I could find the bug nowhere...

(4).
Accidentally, for another reason, I added a temporary variable to store b and t. The statement was much shorter now, and one line was OK.
The code ended like:
if a, b > s, t:
    ...
.

Python told me that  I can't write things like that, so I need two pairs of parentheses:
if (a,b) > (s,t):
Then, suddenly, everything went all right..

================
In Python, if we are to compare two pairs of things (in the form of tuples or lists), parentheses are required.

My first attempt is just like:
if (a, b > s, t):
which is the same as:
if a, (b > s), t:
It is obviously wrong.

Jesse
关键词(Tag): python gotcha

收藏: QQ书签 del.icio.us 订阅: Google 抓虾

最新评论

发表评论

* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 
 

分类小组论坛
杂谈, 娱乐、八卦, 文学、艺术, 体育, 旅游、同城, 象牙塔, 情感, 时尚、生活, 星座, 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定