引用函数外部函数的变量

时间:2013-08-19 19:32:24

标签: python-3.x

#!/usr/bin/python3
def func():
    a = 1
    print(a+12)

print(a)

结果是:

  

NameError:名称'a'未定义

是否可以在函数外部使用 a

3 个答案:

答案 0 :(得分:0)

我认为你不能,因为变量'a'的范围在函数func()中是有限的。如果在外部定义它,可以在函数外部调用'a'变量。如果你是python的初学者(和我一样),请使用this。它帮助了我

PS:我可能错了,因为我也是python的初学者

答案 1 :(得分:0)

在python中,范围是函数,类主体或模块;只要您具有赋值语句foo = bar,它就会在赋值语句所在的范围内创建一个新变量(名称)(默认情况下)。

在外部作用域中设置的变量在内部作用域内是可读的:

a = 5
def do_print():
    print(a)

do_print()

在外部作用域中看不到在内部作用域中设置的变量。请注意,您的代码甚至没有设置变量,因为该行未运行。

def func():
    a = 1 # this line is not ever run, unless the function is called
    print(a + 12)

print(a)

要制作一个你想要的东西,一个函数中的变量集,你可以试试这个:

a = 0
print(a)

def func():
    global a # when we use a, we mean the variable
               # defined 4 lines above
    a = 1
    print(a + 12)

func() # call the function
print(a)

答案 2 :(得分:0)

您可以使用return语句将值传递到更高的范围。

def func():
    a = 1
    print(a+12)
    return a

a = func()
print(a)

结果:

13
1

请注意,该值未绑定到变量在函数内部的名称。您可以将其指定为您想要的任何内容,也可以直接在另一个表达式中使用它。

def func():
    a = 1
    print(a+12)
    return a

func()
print(a) #this will not work. `a` is not bound to anything in this scope.

x = func()
print(x) #this will work

print(func()) #this also works