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

クラスのメソッドのように見えるので、メソッドの定義全体を 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 に答える