robin 发表于 2017-5-5 09:10:10

在Python中用函数式编程来恶心人

  好友caoshijun最近找我做一个字符串的解码,字符串来源于moinmoin,其中将部分字符和中文做了转义,变成了括号内的2位16进制字符。例子字符如下:

"caoshijun(2f)logo(2e)jpg"
  可见"(2f)"对应"/",而"(2e)"对应"."。
  于是写了一段Python程序用于解码,写完以后感觉可读性极差,如下:

import re
aaa="caoshijun(2f)logo(2e)jpg"
print 'result=',re.sub('\((.*?)\)',lambda sre:''.join(map(lambda idx:chr(int(sre.groups()+sre.groups(),16)),range(len(sre.groups())/2))),aaa)

  解析后的运行结果如下:

result= caoshijun/logo.jpg
  话说这其中用了两个lambda,以及map()之类的函数式编程的元素。在Python中有效的利用函数式编程可以将代码行数继续降低,有助于提高可读性,不过写到上面这种情况就不太好了。记得以前某书某牛说:“人类可以理解的代码行数是有限的。”感觉很有理。
页: [1]
查看完整版本: 在Python中用函数式编程来恶心人