2014-12-31 85 views
-2
def function() 
    num = 1 
    num += 1 
    return num 

num是绑定变量还是自由变量?是一个绑定变量或一个自由变量?

P.S.这段代码是用python编写的。在此之前没有前代码。

+2

许多人认为,蟒蛇没有变数。您可以考虑*对象*。这里有两个对象,分别是1和2.'num'是对象的引用,并且在函数中有作用域。 – cdarke

+0

你一定要阅读:[Python内部:符号表,第1部分](http://eli.thegreenplace.net/2010/09/18/python-internals-symbol-tables-part-1) –

+0

@cdarke一个简单的不能坐在Python中没有变量,因为它的工作原理与C的工作方式几乎与Lisp中的变量工作方式相同。这些对象实际上是变量'num'在不同阶段解决的问题,而不是变量本身。 – Sylwester

回答

1

python doc如果一个名称被绑定在一个块中,它是该块的局部变量,除非声明为非本地。如果名称在模块级绑定,它是一个全局变量。 (模块代码块的变量是本地和全局变量。)如果在代码块中使用了一个变量,但在那里未定义变量,则它是一个自由变量

这里numfunction中定义,并且如此绑定它。

你可以看看this other post从SO有自由变量的一个例子