【问题标题】:Whats wrong with indentation of Python if statement? [closed]Python if 语句的缩进有什么问题? [关闭]
【发布时间】:2012-02-19 01:38:45
【问题描述】:

我有

if p != None && (self.running == None or self.running < p):                 
    self.preempt(p) 

缩进有什么问题?

【问题讨论】:

  • 没什么。是什么让您认为缩进有问题?
  • 在您展示的简短 sn-p 中,什么也没有。请添加更多上下文和(完整)错误消息。顺便说一句,您应该使用isis not 来检查None,而&amp;&amp; 一定是错字。
  • 哇,人们需要冷静下来对这个人的反对票。缩进很好;但他确实有一些不正确的东西,如果不发布他就不会学到。
  • @TJBiddle 帮助人们正确解决问题需要他们首先正确报告问题。此外,好的问题将有助于将来谷歌搜索并找到 SO 问题和答案的人。将来遇到此问题的人不太可能寻求有关缩进的帮助,因为他们不太可能得出缩进错误的结论。特别是考虑到错误消息将 (a) 对缩进一无所知; (b) 直接指向&amp;&amp; 符号
  • 这个问题似乎离题了,因为它是关于一个微不足道的语法错误,并且不太可能对未来的用户有用

标签: python python-3.x


【解决方案1】:

使用and 而不是&amp;&amp;

还有PEP 8 -- Style Guide for Python Code 说:

应始终使用isis not 与诸如 None 之类的单例进行比较,而不应使用相等运算符。

所以结果应该是:

if p is not None and (self.running is None or self.running < p):
    self.preempt(p)

【讨论】:

    【解决方案2】:

    很可能它与之前语句的缩进不匹配(您可能混合使用制表符和空格,或者缩进量可能与之前的语句不同)。其余代码和您的实际错误消息会有所帮助。

    【讨论】:

      【解决方案3】:

      实际上尝试这样做会产生如下错误消息:

      • 如果源在文件中:

        Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
          File "test.py", line 1
            if x && y:
                  ^
        SyntaxError: invalid syntax
        
      • 如果输入源:

          File "<stdin>", line 1
            if x && y: pass
                  ^
        SyntaxError: invalid syntax
        

      在这两种情况下,请注意^ 如何指向&amp;&amp;?那是因为 &amp;&amp; 是无效的语法(如消息所述)。它与缩进无关(就像消息中没有说的那样)。

      【讨论】:

      • 我收到了关于缩进的错误,但它已由@gawi 回答修复。也许它与之前的代码有关
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-29
      • 1970-01-01
      • 1970-01-01
      • 2015-07-01
      • 2018-03-23
      • 1970-01-01
      相关资源
      最近更新 更多