在Python中多次更新函数内的全局变量

时间:2014-11-18 17:56:04

标签: python function variables global

基本上我正在尝试更新我在开头声明的字符串。然后我通过一个函数传递一个列表,在通过测试之后,将把列表中的项添加到字符串中,用分号分隔每个项目。

这是我正在做的简略版本,但它证明了我相信的问题。

import os

passList=""

def checkItem(inString):
    if inString.endswith(".tif")==True:
        if passList=="":
            passList=inString
        else:
            passList=passList + ";" + inString

itemList=os.listdir("C:\\temp")

for item in itemList:
    checkItem(item)

print(passList)

我查了一些关于使用' global'功能,但他们似乎没有显示适用于我的情况的例子。目前我在宣布'之前已经使用了这个功能。错误。任何帮助将不胜感激。

谢谢!

3 个答案:

答案 0 :(得分:2)

试试这个:

def checkItem(inString):
    global passList
    # rest of function code

答案 1 :(得分:0)

我相信Hasan Ramezani的回答会解决你的错误。但是考虑重构以消除它的需要。

import os

itemList=filter(lambda x: x.endswith(".tif"), os.listdir("C:\\temp"))
itemList=";".join(itemList)

print(itemList)

答案 2 :(得分:0)

Hasan和Clint都提供了很好的答案。

由于实际代码的复杂性(不能在这里发布),我最终在开始和函数内都为'passList'变量声明了'global'。

import os

global passList
passList=""

def checkItem(inString):
    if inString.endswith(".tif")==True:
        global passList
        if passList=="":
            passList=inString
        else:
            passList=passList + ";" + inString

itemList=os.listdir("C:\\temp")

for item in itemList:
    checkItem(item)

print(passList)

虽然可能看起来不那么性感但是有效。

非常感谢你!