Python中的函数和参数

时间:2013-11-01 14:14:59

标签: python list python-2.7 arguments tuples

我正在尝试构建一个能够计算给定数字平均值的函数。数字可以采用元组格式:(1, 2, 3)或列表格式:[1, 2, 3]

现在我想出了这个:

def get_mean(*arg):
   for x in arg:           ### Calculating sum
      sum = float(sum) + x
   count = len(arg)
   mean = float(sum) / int(count)
   return mean

然后,如果我尝试使用以下属性调用此函数:

print get_mean(1, 2, 3)

输出将是:2.0 但那时:

print get_mean[1, 2, 3]

输出错误:TypeError: 'function' object has no attribute '__getitem__'

为什么会这样?

2 个答案:

答案 0 :(得分:3)

您使用错误的语法传递参数,您错过了括号

print get_mean[1, 2, 3]

但是,如果您使用此项,则会遇到TypeError: unsupported operand type(s) for +: 'float' and 'list' ,因为args[[1, 2, 3]]

print get_mean([1, 2, 3])

因此您需要解压缩列表,因此只需使用*运算符

即可
print get_mean(1, 2, 3)
print get_mean(*[1, 2, 3])
#2.0
#2.0

答案 1 :(得分:-1)

我可能在这里遗漏了一些东西,但是有一个原因让你不只是将数据作为元组或列表传递,例如。

from __future__ import division

def get_mean(nos):
    return sum(nos) / len(nos)

#test
t = (1, 2, 3, 4)
print get_mean(t)
l = [1, 2, 3, 4]
print get_mean(l)

如果您使用python 2.x(在python 3.x中自动完成),from __future__ import division将自动将整数转换为浮点数进行除法