Python在If-Else语句的其他块中重用变量

时间:2015-06-17 19:54:15

标签: python python-3.x if-statement conditional-statements

我目前正在使用Python中的简单文件传输程序。我在提示用户提供要复制的文件夹位置的功能时遇到问题。

def getSrc():
    if getSrc.has_been_called is False:
        source = askdirectory()
        getSrc.has_been_called = True
        return source
    else:
        return source

getSrc.has_been_called = False

变量源是一个未解析的引用。我知道由于if-else语句的范围,必须再次初始化变量,但我不确定如何在不改变用户提示再次访问目录的情况下将目录保存在源变量中。

1 个答案:

答案 0 :(得分:1)

第二次调用val conf : obj = dict [("a","a");("b","b")] 时,第一次创建的getSrc的值早已超出范围并被垃圾回收。为防止出现这种情况,请尝试使source函数的属性与source的属性相同。

has_been_called

虽然,当你可以使用两个属性时,有两个属性有点混乱:

def getSrc():
    if getSrc.has_been_called is False:
        getSrc.source = askdirectory()
        getSrc.has_been_called = True
        return getSrc.source
    else:
        return getSrc.source

如果你处于更高阶的功能情绪,那么创建一个记忆其他功能的功能可能是值得的。您可以查看PythonDecoratorLibrary有关这方面的一些提示,或者您只需使用一个already prepared by Python

def getSrc():
    if not getSrc.source:
        getSrc.source = askdirectory()
    return getSrc.source
getSrc.source = None