UnboundLocalError:具有默认参数的Decorator

这是我的装饰代码。我出于某种原因得到UnboundLocalError但我找不到它。
>>> def validate(schema=None):
        def wrap(f):
            def _f(*args, **kwargs):
                if not schema:
                schema = f.__name__
            print schema
            return f()
            return _f
        return wrap

>>> @validate()
    def some_function():
        print 'some function'


>>> some_function()
Traceback (most recent call last):
  File "<pyshell#27>", line 1, in <module>
    some_function()
  File "<pyshell#22>", line 4, in _f
    if not schema:
UnboundLocalError: local variable 'schema' referenced before assignment
>>> 
所以,我想也许最好在这里发帖。我可能会遗漏一些东西。 谢谢。     
已邀请:
编译器无法确定
schema
的适当范围。在
_f()
中使用
nonlocal schema
(3.x)或稍微改变
_f()
的定义:
def _f(self, schema=schema, *args, **kwargs):
    

要回复问题请先登录注册