即使变量“ a”可以保存整数值,也会出现“ NameError:名称'a'未定义”

时间:2019-06-28 13:56:08

标签: python python-3.x

我编写了一个非常小的函数,该函数应该返回调用时传递的参数。相反,我收到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"

3 个答案:

答案 0 :(得分:1)

在调用函数时,您使用的是命名参数,但实际上并没有声明变量,因此,当您尝试将ab作为{{ 1}}。您需要执行以下操作:

c

答案 1 :(得分:1)

在这种情况下,

abc不是变量而是参数名称(它们仅在函数作用域内变为变量,而不是在您调用它们的位置),这就是为什么类似这个:

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)