python函数压缩

python函数压缩,python,python-2.6,Python,Python 2.6,我编写这个大函数是为了在python代码中进行一些格式化。你能建议怎么把这个弄小一点吗 def disfun(String1,String2,String3): if String3 == "A" or String3 == "B": if String3 == "A": pass elif String3 == "B": print "#"*54

我编写这个大函数是为了在python代码中进行一些格式化。你能建议怎么把这个弄小一点吗

def disfun(String1,String2,String3):
        if String3 == "A" or String3 == "B":
            if String3 == "A":
                pass
            elif String3 == "B":
                print "#"*54

            print "##"," "*48,"##"
            print "##",'{0:^48}'.format(String2),"##"
            print "##",'{0:^48}'.format(String1),"##"
            print "##"," "*48,"##"
            print "#"*54

        elif String3 == "C":
            print "-"*40
            print "--",'{0:^34}'.format(String2),"--"
            print "-"*40

        elif String3 == 'D':
            String2 = ' * '.join(String2)
            print "#"*54
            print "##",'{0:^48}'.format(String2),"##"
            print "##",'{0:^48}'.format(String1),"##"
            print "#"*54

        elif String3 == 'E':
           print "*"*54
           print "**",'{0:^48}'.format(String2),"**"
           print "**",'{0:^48}'.format(String1),"**"
           print "*"*54
很容易变成

if String3 == "B":
    print "#"*54

另外,B、D和E之间有一组共享代码:

def disfun(String1,String2,String3):

    if String3 in ("B", "D", "E"):
        print "#"*54

        if String3 == "B":
            print "##"," "*48,"##"

        if String2 == "D":
            String2 = ' * '.join(String2)

        print "##",'{0:^48}'.format(String2),"##"
        print "##",'{0:^48}'.format(String1),"##"
        print "##"," "*48,"##"
        print "#"*54

    elif String3 == "C":
        print "-"*40
        print "--",'{0:^34}'.format(String2),"--"
        print "-"*40

我会尝试将所有格式简化为一个调用:

def marquee (width,  *content, headerCharacter = '#'):
   print headerCharacter  * width
   for item in content:
       print "%s%s%s" % (headerCharacter * 2, content.center(width - 4), headerCharacter * 2)
   print headerCharacter  * width

然后更改所有逻辑,使其只选择正确的*内容(看起来您有一个或两个项目,具体取决于代码路径)和标题字符

True,从而减少了我之前编写的5个不同函数的代码。错过了。谢谢:)我很困惑,你甚至从来没有定义变量“string”
string
可以是全局变量(但不是一个好名字,因为标准的
string
模块)。当你编辑原始发布的代码以响应答案时,答案不再有意义,这真的让未来的人感到困惑。更新了代码。抱歉,代码中有拼写错误
def marquee (width,  *content, headerCharacter = '#'):
   print headerCharacter  * width
   for item in content:
       print "%s%s%s" % (headerCharacter * 2, content.center(width - 4), headerCharacter * 2)
   print headerCharacter  * width