python函数压缩
我编写这个大函数是为了在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
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