在Python中i**=2是什么意思?是2^i=i吗?

1 投票
1 回答
2779 浏览
提问于 2025-04-18 00:25
def f()
   i=2
   while i<len(l)
   i**=2

在Python中,i**=2的意思是什么呢?这个表达式其实是把i的值提升到2的幂,也就是说,i会变成i的平方。它并不是说2的i次方等于i。

1 个回答

5

i **= 2 是一种使用了增强赋值的方式,里面的 ** 是一个幂运算符。对于数字(还有其他不可变对象)来说,这个操作和下面的意思是一样的:

i = i ** 2

就是把 i 的平方存回 i 里。** 运算符 是幂运算符,它会把左边的数提升到右边的数的幂。

**= 赋值 是这个运算符的 增强 赋值版本。它让左边的数有机会在同一行中进行修改,如果对象是可变的。对于不可变对象来说,这种写法简洁明了。

你提供的代码片段在 Python 中是不合法的;你需要注意缩进(while 块需要多一个缩进级别),而且你在 def 语句和 while 语句后面都缺少了 : 冒号:

def f():
    i = 2
    while i < len(l):
        i **= 2

可以推测这个函数会对 i 做一些其他的操作或者返回结果。

撰写回答