[英]How to use a function variable from **kwargs in python?
我正在尝试执行以下操作,但是却收到异常NameError(“未定义全局名称'rid'”,
def safe_forcecall(fn):
def _safe_forcecall(self, *args, **kwargs):
if self._token_valid(rid) is not None:
return fn(self, *args, **kwargs)
return _safe_forcecall
@safe_forcecall
def add_booking(self, rid, data):
...
您将rid
作为位置参数传递,因此可以在args
找到:
if self._token_valid(args[0]) is not None:
如果您的装饰器始终需要访问该参数,则只需对其明确命名即可:
def safe_forcecall(fn):
def _safe_forcecall(self, rid, *args, **kwargs):
if self._token_valid(rid) is not None:
return fn(self, rid, *args, **kwargs)
return _safe_forcecall
您不会在kwargs
词典中找到该值; 只有当您使用rid=rid
参数调用add_booking
,它才会被放置在那里。 通过在装饰器包装函数中使用显式rid
参数,可以确保始终将其绑定到rid
名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.