python函数问题,个人突然觉得C语言类型检查很有用
任务
首先请定义一个 square_of_sum 函数,它接受一个list,返回list中每个元素平方的和。
我的代码:
def square_of_sum(L):
sum = 0
for x in L:
sum = sum + x*x
return sum
print square_of_sum([1, 2, 3, 4, 5])
print square_of_sum([-5, 0, 5, 15, 25])
完美结果,正确了。但是引发我的思考。这里参数L应该就是一个普通变量,于是我把代码改成
def square_of_sum(L):
if L>=0:
return L
else:
return -L
print square_of_sum(-6)
结果为6,验证了我的想法。
于是我又仔细看了第一次函数的代码,发现从这里无法判断L是不是List,也有可能是set,tuple.
我于是又写了下面代码
def square_of_sum(L):
sum = 0
for x in L:
sum = sum + x*x
return sum
print square_of_sum((1, 2, 3, 4, 5))
print square_of_sum((-5, 0, 5, 15, 25))
结果正确
def square_of_sum(L):
sum = 0
for x in L:
sum = sum + x*x
return sum
print square_of_sum(set([1, 2, 3, 4, 5]))
print square_of_sum(set([-5, 0, 5, 15, 25]))
结果正确
所以我明白了,刚才为了完成任务的函数代码,参数其实可以为3个。可以从函数块代码看出来(只能从这看出来函数参数的类型)
这里只说要List为参数,但是多了2个类型的参数。
假如我写了一个函数只能接受一个类型的参数,接受其它类型的参数返回结果就不是预期的了。刚好这个函数也可以接受其它参数,但是代码中不会报错,这样程序就会出现问题啊,所以我觉得C语言类型检查是很用的。