在Python中**数学运算符做什么?

在Python中**数学运算符做什么?,python,syntax,operators,Python,Syntax,Operators,这在Python中意味着什么: sock.recvfrom(2**16) 我知道sock是什么,我也了解了recvfrom函数的要点,但到底是什么2**16?具体来说,双星号/双星号运算符 (英文关键词,因为很难搜索:times乘以星号星号双倍乘以双星双倍星号运算符) 从Python 3文档中: 当使用两个参数调用时,幂运算符与内置函数具有相同的语义:它将左参数提升为右参数的幂。数值参数首先转换为公共类型,结果为该类型 它相当于216=65536,或pow(2,16)2提升到第16次方我相信

这在Python中意味着什么:

sock.recvfrom(2**16)
我知道sock是什么,我也了解了
recvfrom
函数的要点,但到底是什么
2**16
?具体来说,双星号/双星号运算符


(英文关键词,因为很难搜索:times乘以星号星号双倍乘以双星双倍星号运算符)

从Python 3文档中:

当使用两个参数调用时,幂运算符与内置函数具有相同的语义:它将左参数提升为右参数的幂。数值参数首先转换为公共类型,结果为该类型


它相当于216=65536,或
pow(2,16)
2提升到第16次方

我相信这就是问题所在,因此
2**5
=32。

这是一个令人敬畏的问题,你会想知道为什么更多的编程语言没有它。


您可以使用
sock.recvfrom(1仅用于记录这在Javascript中也是如此(自ECMAScript 2016或ES7以来)。
Math.pow(2,16)==2**16
请参见
a ** b  =  pow(a,b)