我目前正在使用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语句的范围,必须再次初始化变量,但我不确定如何在不改变用户提示再次访问目录的情况下将目录保存在源变量中。
答案 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