对于Python 3.我想从顶级函数调用嵌套函数。 NOT 访问嵌套函数中的变量,但从父母"中调用嵌套函数(我通常称之为子例程)。功能
SO和其他地方的答案描述了如何使用全局和非本地关键字来使嵌套函数中的变量能够被&#访问34;父"功能。但我还没能将该技术转换为Python 3嵌套函数。
我希望实现的目标主要是从外到内的可读性:
def topLevelFunction(listOfStrings):
# Top-level function's code here.
desiredValue = nestedFunction(dataToModify)
return(desiredResult)
# This nested function's source code is visibly contained within its parent.
def nestedFunction(oneListEntry):
# Modify data passed to function.
return(fixedData)
这种结构当然会产生UnboundLocalError: local variable 'nestedFunction' referenced before assignment
。
我用以下方法规避了:
def topLevelFunction(listofStrings):
def nestedFunction(oneListEntry):
# nestedFunction's code goes here.
return(fixedData)
# topLevelFunction's code goes here.
# Only in this "upside down" structure can top-level function call nestedFunction?
return(desiredResult)
部分问题似乎是nonlocal
/ global
个关键字,它使我能够在嵌套函数之外引用变量。范围避免使我能够为嵌套函数本身做同样的事情(?)或者如果它们这样做,语法是唯一的?如果是这样的话,感谢指向该特定语法的指针。
我还使 nestedFunction 成为与 topLevelFunction 相同级别/范围的独立函数。但至少从可读性的角度来看,两次规避(我不会称之为修复)似乎要求我写下来#34;倒挂"在程序流程中稍后使用的东西必须是"更高"在源代码中?
也许我已经习惯了编译不需要这种语言的语言?或者我必须创建一个Python 3 class
?