Author:zumikua Updated at:2013-08-03 17:51:12 UTC
最近在做ACM比赛的时候尝试用了一下python,整个就恶心到我了……正好今天看了不少ruby和python的对比文,现在在这把心中积蓄的吐槽一吐为快。
首先,不内置正则表达式,卧槽连php那种垃圾语言都特么可以直接用正则的好不好?然后,我特么引用了正则后,想进行一次匹配
```
def funcfull(mobj):
return '{0}{1:03d}{2:03d}'.format(int(mobj.group(1)),int(mobj.group(2)),int(mobj.group(3)))
full = re.compile('(\d{1,3})\ million\ (\d{1,3})\ thousand\ (\d{1,3})',re.IGNORECASE)
now_line = full.sub(funcfull,now_line)
```
特么这是人干事?我特么就为了匹配一个正则我还得新建一个方法?别和我提那个lambda,只支持一个表达式要你干屌?而且没有ruby好用的`$1`之类的全局方法,还只能新建一个方法来获取匹配结果 。
知道ruby怎么解决这个问题么?
`str.gsub!(/(\d{1,3})\ thousand\ (\d{1,3})/i){sprintf("%d%3d",$1,$2)}`
高下立现!
而且python这傻逼的字符串格式化也很奇葩,查文档勉强支持的类C格式化字符串还不推荐使用,换了一个这种换汤不换药的format,你特么有什么意义!
就连php做的都比你们好知道么
```
$php = '大家好我是傻逼的php'
echo "$php"
```
而且,其实本来我的那个字符串变量的名字定义成了str,当然,我这是按照官方文档的示例定义的。
然后,str特么还是类型转换的方法!卧槽我就不强求你类似Ruby能有个`.to_s`了你特么正常点来个ToString(val)行么?而且你连官方文档的示例都用str做标识符是闹哪样啊!
其他一些小问题我就不说了……什么方法的参数必须要用括号括起来啊,if while后面都必须要有冒号啊之类的,就当我是从ruby转过来水土不服好了。
然后 ,python 竟然不支持 class 的 reopen。
你特么是个动态语言啊!动态语言啊!你特么连reopen都不支持不会被人耻笑么?我特么不想从网上用个开源的库想稍微修改修改还特么得改源码啊!你知道Ruby有多么方便么?
```
class Array
def X2
self.each{|i| i *= 2}
end
end
```
内部类ruby都敢这样玩啊!你丫怎么就这么怂啊!ruby的元编程能把你爆出翔啊!实例可以重定义方法啊!你简直不知道这特么有多爽啊!配合reopen可以不修改原始代码直接hack代码啊!这是你们 python 永远不懂的啊!
嘛,想到那说那,说的比较乱,而且没学过python,只是对着文档随便来了两发,如有说错, 还望打脸。