即使方法内部不是空白,方法也会返回空白

时间:2016-04-29 08:16:58

标签: python

我编写了一个小的脚本(这是部分的),完整的代码应该搜索一堆.c文件并检查其中的参数是否被使用。此特定代码负责从一行中获取参数,因此可用于在.c文件中搜索相同的参数名称及其值。

问题是打印的第一个瞬间(内部takeTheParam方法)在命令提示符中显示正确的参数,而第二个打印瞬间(在调用takeTheParam方法后)显示空白在命令提示符下。

import os

theParam = ""

def takeTheParam(row, theParam):
    for item in row.split():
        if "_" in item:
            theParam = item
            print theParam
            return theParam


for root, dirs, files in os.walk('C:/pathtoworkdir'):
    for cFile in files:
        if cFile.endswith('.c'):
            with open(os.path.join(root, cFile), 'r') as this:
                for row in this:
                    if '=' in row:
                        takeTheParam(row, theParam)
                        print theParam
                        while theParam not in usedParameters:  # Has the param already been checked?
                            value(row, savedValue, statements, cur)
                            searchAndValueExtract(theParam, parameterCounter, compareValue)
                            while isEqual(savedValue, compareValue, equalValueCounter):
                                searchAndValueExtract(theParam, parameterCounter, compareValue)
                            else:
                                # If IsEqual returns false, that means a param has different values 
                                # and it's therefore being used
                                usedParameters.append(theParam)
                                pass

我在python中有足够的经验来弄清楚为什么会发生这种情况,但我怀疑当theParam在方法之外使用时,它从它中检索到它的价值'代码开头的定义(theParam = "")我不知道为什么,如果是这样的话。

1 个答案:

答案 0 :(得分:3)

更改

 takeTheParam(row, theParam)

theParam = takeTheParam(row, theParam)

在您的情况下,返回的变量永远不会分配给theParam,因此永远保留""。现在已经不存在了。