我编写了一个小的脚本(这是部分的),完整的代码应该搜索一堆.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 = ""
)我不知道为什么,如果是这样的话。
答案 0 :(得分:3)
更改
takeTheParam(row, theParam)
到
theParam = takeTheParam(row, theParam)
在您的情况下,返回的变量永远不会分配给theParam
,因此永远保留""
。现在已经不存在了。