2个功能从2个功能转换为新功能

时间:2012-01-19 22:56:59

标签: python methods header etag

我目前正在编写一小段代码,将保存文档中的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'?

4 个答案:

答案 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)全局