我遇到的主要问题(特定于Python,请不要将另一种语言标记为duplicate)是我不知道如何使用嵌套函数修改函数中的字符串变量(如果有意义的话)。这段代码应该能更好地解释我的意思
def insideAFunction():
variableToMod = "test"
def modFunc():
if 1 > 0:
variableToMod = "TEST"
print("before: " + variableToMod)
modFunc()
print("after: " + variableToMod)
def insideAFunction2():
variableToMod = "test"
def modFunc():
global variableToMod
if 1 > 0:
variableToMod = "TEST"
print("before: " + variableToMod)
modFunc()
print("after: " + variableToMod)
insideAFunction()
insideAFunction2()
输出:
before: test
after: test
before: test
after: test
所需输出为:
after: TEST
我知道我可以通过在insideAFunction()外部定义variableToMod
并像在insideAFunction2()中那样进行全局调用来实现它,但是我想知道是否可以完全在函数内部实现它
您可能正在使用python3.x(我不认为这在python2.x中是个问题),这意味着您需要在内部函数中使用
nonlocal
关键字我猜使用
global
的版本不起作用,因为您已经用相同的名称定义了一个局部变量,它将用该名称隐藏任何全局变量编辑: 实际上,python2.x确实有同样的行为,但它似乎不支持
nonlocal
语句。我想一个解决方案可能是传入local()字典并在内部函数中更改其中的条目,但我不确定这是否可行。我得试试所以它总是打印相同的。在打印之前,需要从modFunc返回一个值并将其赋给外部变量tomod。这样的结果是
前:测试 之后:测试
def insideAFunction2(): variableToMod=“测试”
使用返回函数对我很好:
输出为:
相关问题 更多 >
编程相关推荐