【问题标题】:Python Syntax Error on Bit Literal [closed]Bit Literal上的Python语法错误[关闭]
【发布时间】:2013-02-22 18:37:00
【问题描述】:

我继承了这个 python 程序,并且有点像一个有位的菜鸟,所以我无法弄清楚问题是什么。我在以下函数的第一行遇到语法错误:

def tileKey(self, z, x, y):
    zBits = z & 0xFFL
    #  8bits, 256 levels. normally [0,21]
    xBits = x & 0xFFFFFFFL
    #  28 bits
    yBits = y & 0xFFFFFFFL
    #  28 bits
    key = (zBits << 56) | (xBits << 28) | (yBits << 0)
    #  return the key value integer 720576213915009588
    return key

【问题讨论】:

  • 另外,如果您不在课堂上,请省略 self 参数
  • 请编辑您的帖子以包含完整的回溯/错误消息。谢谢。
  • 抱歉,剪切粘贴错误,空白已更正。这也是在一个类中,因此是 self arg。
  • 数字的 0xFFL 实际上是什么?十六进制中没有L?!
  • @cIph3r L 代表Long(无关但有趣→link)。

标签: python


【解决方案1】:

如果您使用的是 Python 3.x,则不能再使用“L”后缀,因为它不再需要并且不是语法的一部分:

yBits = y & 0xFFFFFFFL
Original exception was:
  File "<stdin>", line 1
    0xFFL
        ^
SyntaxError: invalid syntax

【讨论】:

  • 就是这样!现在可以使用了,非常感谢!
  • 所以...只需删除'L'?
  • @cryanbhu 是的 - 就是这个......
【解决方案2】:

这是因为缩进错误,你必须缩进函数体。你的函数应该像这样缩进:

def tileKey(self, z, x, y):
    zBits = z & 0xFFL
    #  8bits, 256 levels. normally [0,21]
    xBits = x & 0xFFFFFFFL
    #  28 bits
    yBits = y & 0xFFFFFFFL
    #  28 bits
    key = (zBits << 56) | (xBits << 28) | (yBits << 0)
    #  return the key value integer 720576213915009588
    return key

看起来像是一个类中的方法,所以方法的整个定义应该在class关键字行之后缩进,例如:

class YourClass:
    def tileKey(self, z, x, y):
        zBits = z & 0xFFL
        #  8bits, 256 levels. normally [0,21]
        xBits = x & 0xFFFFFFFL
        #  28 bits
        yBits = y & 0xFFFFFFFL
        #  28 bits
        key = (zBits << 56) | (xBits << 28) | (yBits << 0)
        #  return the key value integer 720576213915009588
        return key

【讨论】:

  • 对不起,压痕正确,剪切和粘贴错误,现在应该修复了。
  • 那么你得到的错误信息是什么?
猜你喜欢
  • 2018-09-23
  • 2022-01-23
  • 2014-01-20
  • 2012-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多