我有以下函数,其中包含一个函数:
def function():
previously_parsed_tv_urls = set()
def _get_all_related(tv_urls):
api_urls = [self._build_api_url_from_store_url(url)
for url in tv_urls not in previously_parsed_tv_urls]
previously_parsed_tv_urls = tv_urls.union(api_urls)
function()
但是,我无权访问previously_parsed_tv_urls
。我如何从_get_all_related
函数中访问它?
这是我当前遇到的错误:
UnboundLocalError: local variable 'previously_parsed_tv_urls' referenced before assignment
如果要引用更早定义的名称,即使在“较高”范围内,Python通常也可以使用它。这会赋予您各种力量,尤其是当您只是在解释器中摆弄时。
但是,Python还是很慷慨地尝试阻止您执行可能咬住您或导致令人讨厌,难以调试的问题的事情。这是UnboundLocalError
进来的地方。
在特定范围内重新定义名称后,Python会将其标记为该范围的本地名称(仅),并且看起来不会更高以提供值。这样就可以避免在不明确要求的情况下意外地破坏更高的作用域。
正如Andrea Corbellini所提到的,Python 3添加了nonlocal关键字,以允许您发出这样一个明确的请求。PEP 3104非常详尽地描述了允许的范围规则的变化,并与不带Pythonnonlocal
以及其他同类通用语言的Python进行了比较。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句