Python-可变范围

Python- Variable Scope

1
2
3
4
5
def Interface():
     Number = input("Enter number:")

Interface()
print(Number)

这是我的代码的一个小的简化片段,它产生:

1
2
3
4
Traceback (most recent call last):
  File"C:/Users/Jack/Documents/Python/NumberToText.py", line 78, in
    print(Number)
NameError: name 'Number' is not defined

这是因为变量是在函数中定义的。

我能做些什么来解决这个问题?


这取决于你想做什么。

可能使Interface函数返回Number是最简单的解决方案。

1
2
3
4
5
def interface():
     number = input("Enter number:")
     return number

print(interface())

关于python中的作用域规则的主题,请参见此so qa。

注意:如您所见,我已经按照PEP-8指南将函数名和变量名转换为小写。


因为变量Number只属于函数Interface()。您可以这样使用return

1
2
3
4
5
6
7
def Interface():
     number = int(input("Enter number:"))
     # remember use int() function if you wish user enter a number

     return(number)

print(Interface())

或者像这样使用global

1
2
3
4
5
6
7
def Interface():
     global number
     number = input("Enter number:")
     # remember use int() function if you wish user enter a number

Interface()
print(number)

只有在需要时才使用global,变量可以在任何地方使用,或者需要函数返回其他东西。因为修改全局会破坏模块性。

这是关于什么是全局变量的文档。