在Python中命名参数

问题描述 投票:0回答:3

我正在使用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
python function variables parameters arguments
3个回答
0
投票

参数是作为调用的一部分绑定到对象的本地名称。如果函数参数名称与全局名称相同,则在函数内,名称引用参数,而不是全局。

a = 0
def f(a):
    print(a)
f(1)  # prints 1, not 0

差异函数中的本地名称彼此不嵌套,在代码中使用variance,不能相互干扰。


0
投票

这无关紧要,因为变量variance的范围将包含在函数的范围内。这意味着一旦函数的使用结束,变量就会消失。如果你确实有这样的事情:

x = 5
y = 6

def myFunction(x):
    return x + y

myFunction(2)

该函数将返回8而不是11,因为它优先于范围。


0
投票

variance是在一个函数中定义的,在本例中是grades_variance,所以当一个参数在variance中再次被称为grades_std_deviation时,它们根本不会发生冲突。

这称为范围,用简单的英语表示:在哪里可以使用该变量,而不会出现与其他具有相同名称的变量冲突的错误,或者解释器告诉您它不存在,因为它超出了范围它被定义了。

© www.soinside.com 2019 - 2024. All rights reserved.