鉴于:
PICKLE_FILENAME_INSTRUCTION_IDS = 'pickled_instruction_ids.txt'
def compare_instruction_id_list_with_baseline(baselineidspicklefile):
baseline_ids = load_pickled_ids(baselineidspicklefile)
current_main_url_content = get_page_content(main_url_test)
root = lh.fromstring(current_main_url_content)
current_ids = get_instruction_ids(root)
diff = [id for id in current_ids if id not in baseline_ids]
return diff
其中baselineidspicklefile
是id(a list
)的基线,pickled
稍后在代码中,我对diff
进行检查,如果它不是空的,我会对新的id(current_ids
)进行一些操作。不过,现在我意识到,如果diff不是空的,我还希望通过pickle用新的diff列表覆盖基线id,使其成为新的基线
current_ids
是这个函数的局部函数。所以我不能从程序的主要部分调用它。我不希望从函数中同时返回diff
和current_ids
。显然,我不想让current_ids
全球化。
我访问这两个变量的选项是什么
注意:这是我遇到的一个普遍问题-在执行以下操作的函数中使用urllib2时,我也会遇到这个问题:
response = urllib2.urlopen(url)
content = response.read()
我通常返回content
,这样我就可以做lxml.html.fromstring(content)
之类的事情,但后来我意识到程序中的一个稍后点将需要访问response
,我被卡住了,因为我没有返回
您可以使用内置的
locals()
函数:然后可以使用
compare_instruction_id_list_with_baseline
中定义的所有变量,方法是使用返回值,然后在括号中使用定义所需变量的字符串。例如,return_value = compare_instruction_id_list_with_baseline(...)
diff = return_value['diff']
相关问题 更多 >
编程相关推荐