为什么python不支持:while(s = f.readline())?

时间:2012-07-13 07:08:20

标签: python

以下更多示例:

 if (a = xyz() ) > abc: 

真的想知道为什么,难道是难闻的种类?

注意:我知道语法,但我问为什么Python不支持这样的语法,因为许多其他语言(例如,c,java ...)支持

2 个答案:

答案 0 :(得分:4)

来自python design FAQ

  

不允许在Python表达式中赋值的原因是由这种结构引起的其他语言中常见的,难以发现的错误:

    if (x = 0) {
        // error handling
    }
    else {
        // code that only works for nonzero x
    }
     

错误是一个简单的拼写错误:x = 0,它将0赋给变量x,而比较x == 0肯定是预期的。

正如FAQ中所解释的那样,使用迭代器可以覆盖在表达式中使用赋值的大多数“用例”。

答案 1 :(得分:0)

记住python哲学:应该有一个 - 最好只有一个 - 明显的方法来做到这一点 这对我来说听起来不太明显! 您也可以查看此答案:
why does python assignment not return a value