【问题标题】:Why does this function return 3125为什么这个函数返回 3125
【发布时间】:2018-05-25 13:00:54
【问题描述】:

今天在一本python教科书上看到一个函数,代码如下:

def power(x,y):
    return pow(x,y)

当我向power 提供参数时,如下所示:

>>>params=(5,)*2
>>>power(*params)  
3125

该函数返回给我一个 3125。我知道 3125 可能来自 (5*5)*(5*5)*5,但我不明白代码中的参数是如何工作的。 (5,)*2这个表达式是什么意思?

【问题讨论】:

  • 你检查过params 是什么吗?那应该回答这个问题。

标签: python expression pow


【解决方案1】:

这是一个元组的串联。

>>>(5,)*2
(5,5)
>>>(5,)*5
(5,5,5,5,5)

【讨论】:

  • 我得到了向元组添加值的方法。2*(5,)==(5,5)
  • 2*(5,)==(5,)*2
【解决方案2】:

如果您检查params 的值,您可以看到它是如何工作的:

>>> params=(5,)*2
>>> params
(5, 5)
>>> power(*params)
3125

*n 应用于序列返回附加到自身的序列n 次 (see documentation)。

【讨论】:

  • 我得到了向元组添加值的方法。2*(5,)==(5,5), pow(5,5)=3125
【解决方案3】:

注意(5,)*2 扩展为(5, 5),也就是一个元组。请参阅 tuples 上的文档。

回复pow():根据docspow(x,y)返回x的y次幂

在您的脚本中,您使用 power(*params) 中的 * 将 params 元组中的两项作为单独的参数插入到函数中。您可以通过键入power(5,5) 来实现相同的效果。

因此,5^5,等于 3125。

元组的直观教程是here

【讨论】:

  • 我得到了向元组添加值的方法。2*(5,)==(5,5), pow(5,5)=3125
猜你喜欢
  • 2016-03-21
  • 2018-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-21
  • 1970-01-01
  • 2021-12-21
相关资源
最近更新 更多