位文字上的Python语法错误

位文字上的Python语法错误,python,Python,我继承了这个python程序,作为一个有比特的noob,我不知道问题出在哪里。以下函数的第一行出现语法错误: 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

我继承了这个python程序,作为一个有比特的noob,我不知道问题出在哪里。以下函数的第一行出现语法错误:

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
def tileKey(self,z,x,y):
zBits=z&0xFFL
#8位,256级。正常情况下[0,21]
xBits=x&0xFFFFFFFL
#28位
yBits=y&0xFFFFFFFL
#28位

key=(zBits这是因为缩进错误,您必须缩进函数体。您的函数应该缩进如下:

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

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

yBits = y & 0xFFFFFFFL
Original exception was:
  File "<stdin>", line 1
    0xFFL
        ^
SyntaxError: invalid syntax
yBits=y&0xFFFFFFFL
最初的例外是:
文件“”,第1行
0xFFL
^
SyntaxError:无效语法

此外,如果您不在类中,请省略
self
参数。请编辑您的帖子,以包含完整的回溯/错误消息。谢谢。对不起,剪切粘贴错误,空格已更正。此外,这是在类中,因此是self参数。数字的0xFFL实际上是什么?十六进制中没有
L
?@cIph3r
L
代表
Long
(不相关但有趣→ ).很抱歉,我的错,缩进是正确的,剪切和粘贴不是正确的,应该现在修复。那么您收到的错误消息是什么?就是这样!现在可以工作了,非常感谢!所以…只需删除“
L
”?@cryanbhu-yup-就是这个。。。
yBits = y & 0xFFFFFFFL
Original exception was:
  File "<stdin>", line 1
    0xFFL
        ^
SyntaxError: invalid syntax