以下计划:
a_var = 10
b_var = 15
e_var = 25
def a_func(a_var):
print "in a_func a_var = ",a_var
b_var = 100 + a_var
d_var = 2*a_var
print "in a_func b_var = ",b_var
print "in a_func d_var = ",d_var
print "in a_func e_var = ",e_var
return b_var + 10
c_var = a_func(b_var)
打印此输出:
在a_func中a_var = 15
在a_func中b_var = 115
在a_func中d_var = 30
在a_func e_var = 25
我不确定为什么“在a_func a_var”中等于15而不是10。
答案 0 :(得分:2)
你可能应该看看variable scoping来理解为什么事情会这样运作;传入的参数优先。
答案 1 :(得分:1)
这是因为函数的参数名为a_var
,这会隐藏全局变量。
您将函数调用为a_func(b_var)
,因此参数的值为15.
答案 2 :(得分:1)
您的函数将a_var
作为参数;这“覆盖”了全球价值。由于您将b_var
(15)的值传递给函数,因此它将a_var
视为15。
答案 3 :(得分:0)
使用此简化案例更容易看到
A = 10
B = 15
def foo(A):
print A # prints 15
foo(B)