我正在使用Codecademany(我是初学者),遇到了一个与命名参数有关的问题。没有错误,它做了我想做的事情,但是我注意到在第19行中它命名了参数variance
,一个以前定义的变量。我想知道的是,当一个函数以相同的名称调用它的参数和变量时会发生什么。它调用变量还是参数?它是如何决定的?我怎样才能选择哪一个呢?你知道吗
grades = [100, 100, 90, 40, 80, 100, 85, 70, 90, 65, 90, 85, 50.5]
def print_grades(grades_input):
for grade in grades_input:
print grade
def grades_sum(scores):
return sum(scores)
def grades_average(grades_input):
return grades_sum(grades_input) / float(len(grades_input))
def grades_variance(scores):
variance = 0
for score in scores:
variance += (grades_average(scores) - score) ** 2
return variance / len(scores)
def grades_std_deviation(variance):
return variance ** 0.5
这无关紧要,因为变量
variance
的作用域将包含在函数的作用域中。这意味着一旦函数的使用结束,变量就会消失。如果你真的有这样的东西:函数将返回8,而不是11,因为它优先于作用域。你知道吗
参数是作为调用的一部分绑定到对象的本地名称。如果函数参数名称与全局名称相同,则在函数中,名称引用的是参数,而不是全局名称。你知道吗
代码中带有
variance
的差异函数中没有嵌套的局部名称不能相互干扰。你知道吗variance
是在函数中定义的,在本例中是grades_variance
,因此当参数在grades_std_deviation
中再次调用variance
时,它们根本不冲突。你知道吗这被称为范围,简单的英语意思是:其中您可以使用该变量,而不会出现错误,例如与同名的其他变量冲突,或者解释程序告诉您它不存在,因为它在定义它的范围之外。你知道吗
相关问题 更多 >
编程相关推荐