Python位文字的语法错误

4 投票
2 回答
4168 浏览
提问于 2025-04-17 16:48

我接手了一个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

2 个回答

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

看起来这是一个类中的方法,所以整个方法的定义应该在包含 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
13

如果你在使用Python 3.x版本,那么你就不能再使用'L'这个后缀了,因为它不再需要,也不属于语法的一部分。

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

撰写回答