3

我继承了这个 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
4

2 回答 2

10

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

yBits = y & 0xFFFFFFFL
Original exception was:
  File "<stdin>", line 1
    0xFFL
        ^
SyntaxError: invalid syntax
于 2013-02-22T18:47:39.883 回答
0

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

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

它看起来像是一个类中的一个方法,所以方法的整个定义应该在 with 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
于 2013-02-22T18:38:33.330 回答