我编写了一个非常小的函数,该函数应该返回调用时传递的参数。相反,我收到NameError:名称'a'未定义
当'b'被赋予整数值时,此代码段确实有效
def func(a,b,c):
return a,b,c
result = func(a=5, c=15, b=25)
print(result)
但是当给它们分配了'a'和'c'之和时,就会出现NameError。
def func(a,b,c):
return a,b,c
result = func(a=5, c=15, b=a+c)
print(result)
"NameError: name 'a' is not defined"
答案 0 :(得分:1)
在调用函数时,您使用的是命名参数,但实际上并没有声明变量,因此,当您尝试将a
和b
作为{{ 1}}。您需要执行以下操作:
c
答案 1 :(得分:1)
a
,b
和c
不是变量而是参数名称(它们仅在函数作用域内变为变量,而不是在您调用它们的位置),这就是为什么类似这个:
b = 25
result = func(a=5, c=15, b=b)
可以工作,尽管b=b
看起来没有任何意义。
此外,此不会起作用:
result = func(a=5, c=15, b=25)
print(a)
因为a
在此范围内不是变量。
答案 2 :(得分:1)
在这一行:
func(a=5)
a不是变量,而是变量,这意味着您不能在函数外部访问它。 这意味着您什么时候做:
func(a=5, b=a)
它将尝试查找不存在的名为a的变量。 相反,只需在函数调用之前设置变量,它就可以工作:
def func(a,b,c):
return a,b,c
a=5
c=15
b=a+c
result = func(a=a, c=c, b=b)
print(result)