Python 语法 - 两个减号和一个等号是什么意思

Python syntax - what do two less-signs and one equal sign mean

我搜索了一个示例来转换 WINAPI FILETIME values into UNIX time_t (for a new Golang project) and found an example in Python

尽管我过去在 Python 中编写过许多代码,但我不知道该示例中的 <<=|= 语法,Google 无法为这些搜索生成可用的结果声明。

有人可以向我解释一下他们是做什么的吗?

import datetime

_FILETIME_null_date = datetime.datetime(1601, 1, 1, 0, 0, 0)
def FiletimeToDateTime(ft):
    timestamp = ft.dwHighDateTime
    timestamp <<= 32
    timestamp |= ft.dwLowDateTime
    return _FILETIME_null_date + datetime.timedelta(microseconds=timestamp/10)

它们是位移运算符 << 和按位或 | 的增强赋值版本,就像 += 是增强的 +,所以:

timestamp <<= 32

相当于

timestamp = timestamp << 32

这取自 C。它是 '<<' 或 '|'运算符(分别按位左移和按位或)加上赋值运算符:

a <<= b

相同
a = a << b

同样适用于 |=。