我正在使用Codecademany(我是初学者。)我遇到了一个与命名参数有关的问题。 Ther没有错误,它完成了我想要的但是我注意到在第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
答案 0 :(得分:0)
参数是作为调用的一部分绑定到对象的本地名称。如果函数参数名称与全局名称相同,则在函数内,名称引用参数,而不是全局名称。
a = 0
def f(a):
print(a)
f(1) # prints 1, not 0
差异函数中的本地名称彼此不嵌套,代码中包含variance
,不会相互干扰。
答案 1 :(得分:0)
这没关系,因为变量variance
的范围将包含在函数的范围内。这意味着一旦函数的使用结束,变量就会消失。如果你确实有这样的东西:
x = 5
y = 6
def myFunction(x):
return x + y
myFunction(2)
该函数将返回8而不是11,因为它优先于范围。
答案 2 :(得分:0)
variance
定义为 一个函数,在本例中为 grades_variance
,因此当再次调用参数variance
时 grades_std_deviation
,他们根本不会发生冲突。
这称为 范围 ,简单英语表示:其中您可以使用该变量,而不会出现与其他变量冲突等错误具有相同名称的解释器或解释器告诉您它不存在,因为它在之外从定义它的范围。