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

print(a)

结果是:

NameError:名称“a”未定义

是否可以使用外部功能?

4

3 回答 3

0

我不认为你可以,因为变量“a”的范围在函数 func() 内是有限的。如果您在外部定义了“a”变量,则可以在函数外部调用它。如果你是 python 的初学者(像我一样)使用这个。它帮助了我

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

于 2013-08-20T16:24:22.690 回答
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)
于 2013-08-20T16:29:41.050 回答
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
于 2013-08-20T16:36:07.303 回答