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
同样适用于 |=。
我搜索了一个示例来转换 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
同样适用于 |=。