fdgogogo
2014-06-18 10:50:21 +08:00
不是很明白你为什么要写这么晕的代码...
按这么说的确是不能重名,为什么呢? 看下代码你就懂了
>>> def foo():
... print 'hello'
...
>>> def bar():
... print 'world'
...
>>> foo()
hello
>>> bar()
world
>>> foo
<function foo at 0x1004812a8>
>>> bar
<function bar at 0x100481320>
>>> foo = bar
>>> foo
<function bar at 0x100481320>
>>> foo()
world
>>> foo == bar
True
>>> foo() == bar()
world
world
True
你在写def test()的时候, 实际上你不是写了一个函数, 你是生成了一个叫test的变量, 装着一个函数. 你可以在运行时实时生成新的函数, 也可以给把一个函数赋值给另一个函数, 所以你这里的test指向的并不是你以为的局部变量,而是这个函数自身