为什么这个函数 return 是某种幂的值? (python 2.7)
Why exactly does this function return a value to some power? (python 2.7)
def power(num, x = 1):
result = 1
for i in range(x):
result = result * num
return result
所以我看到了一个关于调用带有 2 个参数的函数的教程,图片中的这个被用作示例来说明如何创建一个名为 power(num, x=1) 的函数,该函数的间隔为第一个参数并将其提升到第二个参数的幂。有人可以用通俗易懂的语言解释为什么会发生这种情况以及此函数和 'for' 循环中到底发生了什么吗?
首先,range(x)
等价于range(0, x)
,生成一个范围从0
到x - 1
的序列。例如,使用 range(3)
可以得到序列 0、1 和 2,其中包含三个元素。通常,range(x)
生成一个包含 x
个元素的序列。
其次,for i in range(x)
使 i
遍历 range(x)
的所有元素。由于 range(x)
有 x
个元素,i
将遍历 x
个不同的值,因此 for
循环中的语句将被执行 x
次.
通过上面的分析,power
函数体等价于:
result = 1
result = result * num
result = result * num
// repeat x times
result = result * num
相当于:
result = 1 * num * num * ... * num // x nums here
这显然是 num
的 x
次方。
更新
以下是此函数如何处理特定输入数据。当 num
为 3 且 x
为 4 时,我们有:
result = 1
result = result * num // = 1 * 3 = 3
result = result * num // = 3 * 3 = 9
reuslt = result * num // = 9 * 3 = 27
result = result * num // = 27 * 3 = 81 = 3^4
return result // 81 is returned
我们还可以更详细地展示执行过程:
result = 1
i = 0 // entering the loop
result = result * num // = 1 * 3 = 3
i = 1 // the second round of the loop begins
result = result * num // = 3 * 3 = 9
i = 2 // the third round of the loop begins
reuslt = result * num // = 9 * 3 = 27
i = 3 // the fourth and final round of the loop begins
result = result * num // = 27 * 3 = 81 = 3^4
// range(4) is exhausted, so the loop ends here
return result // 81 is returned
def power(num, x = 1):
result = 1
for i in range(x):
result = result * num
return result
所以我看到了一个关于调用带有 2 个参数的函数的教程,图片中的这个被用作示例来说明如何创建一个名为 power(num, x=1) 的函数,该函数的间隔为第一个参数并将其提升到第二个参数的幂。有人可以用通俗易懂的语言解释为什么会发生这种情况以及此函数和 'for' 循环中到底发生了什么吗?
首先,range(x)
等价于range(0, x)
,生成一个范围从0
到x - 1
的序列。例如,使用 range(3)
可以得到序列 0、1 和 2,其中包含三个元素。通常,range(x)
生成一个包含 x
个元素的序列。
其次,for i in range(x)
使 i
遍历 range(x)
的所有元素。由于 range(x)
有 x
个元素,i
将遍历 x
个不同的值,因此 for
循环中的语句将被执行 x
次.
通过上面的分析,power
函数体等价于:
result = 1
result = result * num
result = result * num
// repeat x times
result = result * num
相当于:
result = 1 * num * num * ... * num // x nums here
这显然是 num
的 x
次方。
更新
以下是此函数如何处理特定输入数据。当 num
为 3 且 x
为 4 时,我们有:
result = 1
result = result * num // = 1 * 3 = 3
result = result * num // = 3 * 3 = 9
reuslt = result * num // = 9 * 3 = 27
result = result * num // = 27 * 3 = 81 = 3^4
return result // 81 is returned
我们还可以更详细地展示执行过程:
result = 1
i = 0 // entering the loop
result = result * num // = 1 * 3 = 3
i = 1 // the second round of the loop begins
result = result * num // = 3 * 3 = 9
i = 2 // the third round of the loop begins
reuslt = result * num // = 9 * 3 = 27
i = 3 // the fourth and final round of the loop begins
result = result * num // = 27 * 3 = 81 = 3^4
// range(4) is exhausted, so the loop ends here
return result // 81 is returned