Python中的命名参数

2024-04-24 08:00:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用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

Tags: inforinput参数lenreturndef命名
3条回答

这无关紧要,因为变量variance的作用域将包含在函数的作用域中。这意味着一旦函数的使用结束,变量就会消失。如果你真的有这样的东西:

x = 5
y = 6

def myFunction(x):
    return x + y

myFunction(2)

函数将返回8,而不是11,因为它优先于作用域。你知道吗

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

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

代码中带有variance的差异函数中没有嵌套的局部名称不能相互干扰。你知道吗

variance是在函数中定义的,在本例中是grades_variance,因此当参数在grades_std_deviation中再次调用variance时,它们根本不冲突。你知道吗

这被称为范围,简单的英语意思是:其中您可以使用该变量,而不会出现错误,例如与同名的其他变量冲突,或者解释程序告诉您它不存在,因为它在定义它的范围之外。你知道吗

相关问题 更多 >