使用函数之外的变量

时间:2017-06-28 12:48:10

标签: python python-3.x

我已经定义了一个从用户输入中获取值的函数。这是一条路径(基于appJar的.directoryBox)。我已经将目录框的代码放在函数内部弹出,以便在按下按钮时显示。但是,我似乎无法使用函数之外的值。

代码的重要部分如下所示:

def dirfunction(button):
    dirr = app.directoryBox('box')
    app.setEntry('Directory', dirr)
    app.showButton('Search')
    return dirr

def searchfunction(button):
    if button == 'Search':
        findBigfile.findBigFiles(dirr, mbSize)


mbSize = app.addLabelEntry('Size in MB')
app.addLabelEntry('Directory')
app.setLabelWidth('Size in MB', '10')
app.setLabelWidth('Directory', '10')

app.addButton('Choose Directory', dirfunction)
app.addButton('Search', searchfunction)
app.hideButton('Search')

app.go()

我尝试在dirfunction之外使用'dirr'变量,但我无法使其工作。它只适用于。

编辑:我也无法在该函数之外创建app.directoryBox,因为这会导致在打开应用程序时直接发生弹出窗口。

1 个答案:

答案 0 :(得分:3)

dirr是一个局部变量,它只能在定义的上下文中看到(在你的情况下,在函数dirfunction里面,它不存在于它之外)。

为了能够看到外面你必须在外面宣布它。

dirr = None

之后,从函数内部访问它,在python 2中通过使用global来完成:

def method():
    global dirr # you have to declare that you'll use global variable 'dirr'
    dirr = "whatever"

现在:

print `dirr` 

将打印:

whatever