为啥这个函数会返回一个值呢? (蟒蛇2.7)
Posted
技术标签:
【中文标题】为啥这个函数会返回一个值呢? (蟒蛇2.7)【英文标题】:Why exactly does this function return a value to some power? (python 2.7)为什么这个函数会返回一个值呢? (蟒蛇2.7) 【发布时间】:2015-10-04 03:11:01 【问题描述】:def power(num, x = 1):
result = 1
for i in range(x):
result = result * num
return result
所以我遇到了一个关于使用 2 个参数调用函数的教程,图片中的这个被用作示例来展示如何创建一个名为 power(num, x=1) 的函数,该函数在第一个参数中需要一个间隔论点并将其提升到第二个论点的幂。有人能通俗地解释一下为什么会发生这种情况,以及这个函数和“for”循环到底发生了什么吗?
【问题讨论】:
如何在数学上定义一个乘以 x 次方的数? 这与循环有何不同? 我只是没有看到这个函数如何转换为那个语句 数字1
是乘法恒等式(n * 1) == n
。对于整数指数,此函数将 num
自身相乘以进行 x
迭代。是的,这不是循环或求幂的一个很好的例子,但它可以在关于指数的未说明假设的情况下工作。
我想我明白了。行结果 = (resultnum) 是否以某种方式连接 num,除了不是将 num 与你相乘的任何结果相加吗?所以如果第一个参数是 2 而第二个参数是 3 你的 (result = 3),那么 result=(resultnum) 将与 result=(3*num) 相同,它本质上是 (numnumnum) 或 (2*2*2) 等于 8。这是因为 2^3 是 8。我说得通吗?还是我只是在猜测并走运?
【参考方案1】:
首先,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
【讨论】:
你能用一个像 3^4 这样的具体例子再次展示你在幂函数的主体中做了什么吗?我想我明白了,我只需要用真实的价值来看待它,以便更好地可视化它以上是关于为啥这个函数会返回一个值呢? (蟒蛇2.7)的主要内容,如果未能解决你的问题,请参考以下文章