我目前正在编写一小段代码,将保存文档中的Web服务器页面的etag与服务器上的etag进行比较。如果它们不同,代码将表明这一点。我的代码如下: -
import httplib
def currentTag():
f = open('C:/Users/ME/Desktop/document.txt')
e = f.readline()
newTag(e)
def newTag(old_etag):
c = httplib.HTTPConnection('standards.ieee.org')
c.request('HEAD', '/develop/regauth/oui/oui.txt')
r = c.getresponse()
current_etag = r.getheader('etag').replace('"', '')
compareTag(old_etag, current_etag)
def compareTag(old_etag, current_etag):
if old_etag == current_etag:
print "the same"
else:
print "different"
if __name__ == '__main__':
currentTag()
现在,检查我的代码,实际上没有理由将{etag'从currentTag()
方法传递到newTag()
方法,因为{{1}未处理预先存在的etag }。尽管如此,如果我不这样做,我怎样才能将两个不同的值传递给newTag()
。例如,在定义compareTag()
时,如何从compareTag()
方法传递'etag',从currentTag()
方法传递'current_etag'?
答案 0 :(得分:4)
你不应该像这样链接你的函数调用,有一个主要的代码块来串行调用函数,如下所示:
if __name__ == '__main__':
currtag = currentTag()
newtag = newTag()
compareTag(currtag,newtag)
调整您的功能以返回相关数据
函数的基本思想是它返回数据,你通常使用函数做一些处理并返回一个值而不是控制流。
答案 1 :(得分:0)
将您的主要内容更改为:
if __name__ == '__main__':
compareTag(currentTag(), newTag())
然后让currentTag()
返回e并newTag()
返回current_etag
答案 2 :(得分:0)
def checkTags():
c = httplib.HTTPConnection('standards.ieee.org')
c.request('HEAD', '/develop/regauth/oui/oui.txt')
r = c.getresponse()
with open('C:/Users/ME/Desktop/document.txt', 'r') as f:
if f.readline() == r.getheader('etag').replace('"', ''): print "the same"
else: print "different"
答案 3 :(得分:0)
你可以使变量(即etag)全局