Py的缺点?!

提问

         Zoom.Quiet zoom.quiet# gmail.com
发件人当地时间:         发送时间 14:24 (GMT+08:00)。发送地当前时间:下午5:03。 ✆
主题:      [PyCon2011China]后续思考: Py 有什么缺点?!

在昨天内部分享交流中,俺回顾了 PyCon2011China 中透露出的 Py 最新使用/发展和体验; 最后有同学问:

直接HOLD 住了俺的思路...

   - 是也乎!?
   - 世界上没有完美的语言
   - Python 相比各种开发语言也有缺点,当然的!
   可是,是什么呢?!

- 没有 {} ?
- 不支持多CPU ?

大家在学习使用过程中,对 Python 有什么失望的地方?! - 兼听则明 - 现在不满意的,就是我们努力的方向..

PS: - 俺现场憋出的回答是:

zw g

zw g pekingmaster# gmail.com
发件人当地时间:         发送时间 14:55 (GMT+08:00)。发送地当前时间:下午5:04。 ✆

Leo Jay

Leo Jay python.leojay# gmail.com
发件人当地时间:         发送时间 14:58 (GMT+08:00)。发送地当前时间:下午5:05。 ✆

我不同意说python没缺点。但我也不认为python3是一次大修。 在我看来python3最重要变化,一是print之类的语句变成了函数调用,二是默认使用unicode做字符串。 这能算是大修么?至少我个人认为是不算的。

从我的角度来说,python可以提高的地方,

至于语言本身,我没感觉到有什么明显的缺点。

对于那些写代码用英文,写注释用英文,平时也不用处理非英文数据的人来说,转3的动力的确不强。

我的看法是,

总的来说就是能用3就用3,毕竟3是未来的方向,而且的确有相当一些细节上的改进 但如果不能用3的情况下,那就用2,不要勉强。

ubunoon

 ubunoon netubu# gmail.com
发件人当地时间:         发送时间 15:43 (GMT+08:00)。发送地当前时间:下午5:07。 ✆

CJ

CJ jamchange# gmail.com
发件人当地时间:         发送时间 16:57 (GMT-08:00)。发送地当前时间:上午1:08。 ✆

 Leo Jay python.leojay # gmail.com
发件人当地时间:         发送时间 17:19 (GMT+08:00)。发送地当前时间:上午9:10。 ✆

说到这个我想起来,python的文档很SB的地方是,它很少说一个方法调用是否会抛异常以及抛什么类型的异常。

   1 try:
   2    foo()
   3 except:
   4    ...

所以我现在养成习惯,代码都写成:

   1 try:
   2    foo()
   3 except Exception:
   4    ...

而更多的方法,比如time.sleep,文档压根就不告诉你,它可能会抛异常。

依云 :中文问题!

lilydjwg # gmail.com
发件人当地时间:         发送时间 17:20 (GMT+08:00)。发送地当前时间:上午9:11。 ✆

On Wed, Dec 21, 2011 at 04:05:19PM +0800, 智障 wrote:

> 俺觉得俺现在用着Python2也挺好,编码问题不是什么大问题加#-*- coding:utf-8 -*-用章鱼编辑器的自动插入功能,也挺方便。

如果你认为所谓的「编码问题」指的是这个的话你就大错特错了。Python 2 在引 入 Unicode 后即混淆了 str 和 unicode——在一个需要字符串的 API,你既可以传 str 也可以传 unicode。有些 API 没处理好,如:

>>> os.path.join('中文', u'路径')
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "/usr/lib/python2.7/posixpath.py", line 71, in join
   path += '/' + b
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)

经常会遇到这种情况。然后你 encode 或者 decode 一下就解决了。问题是,这种 问题没有规律。

还有一个问题是,

>>> '中文'
'\xe4\xb8\xad\xe6\x96\x87'
>>> u'中文'
u'\u4e2d\u6587'

repr 的结果不可读。这意味你 print 一个 list 或者 dict 什么的,你看不到其 中的中文。

pansz 指正

pan.shizhu # gmail.com
发件人当地时间:         发送时间 08:24 (GMT+08:00)。发送地当前时间:上午9:13。 ✆

的地方会自动把 str 转成 unicode。


我以为只要理解这个,几乎可以解决python2 90%以上的编码问题。

其实说了那么多, py3 对国人唯一的重要改进仅仅是"缺省编码由 ascii 修改为了utf-8"而已。

zhao shichen

shichen.zhao# gmail.com
发件人当地时间:         发送时间 18:10 (GMT+08:00)。发送地当前时间:下午6:54。 ✆

在我的项目组中,基本上不准编写类,只允许编写函数,目的就是为了方便集成和控制代码;

象很多java项目比如eclipse一样搞得又大又臭是绝对没法接受的

总之,越来越多的“懂OO的java工程师“进入python领域,导致python越来越差劲

shhgs

shhgs.efhilt # gmail.com
发件人当地时间:         发送时间 18:56 (GMT-05:00)。发送地当前时间:下午8:06。 ✆

问题还是很多的

Shell Xu

shell909090 # gmail.com
发件人当地时间:         发送时间 22:06 (GMT+08:00)。发送地当前时间:上午9:01。 ✆

python的整个系统,我其实有非常多的不满。但是用任何一门语言都是取舍问题,如果有一门语言,库够多,已读,易用,性能高,我毫不犹豫立刻转过去。python的强处在于庞大的库,还有非常好的易读和易用性。

   1 a = 1
   2 def f():
   3   print a
   4   a = 2

我基本不记得了,反正web.py里面有用到,需要的话去炒栗子吧。为什麽方法要隐藏居然要改名字加啊。你到底是在做OO还是在看起来像OO的东西上狂打补丁啊魂淡。

combinator。何必呢?由于强调lambda的快速特性,因此将lambda强制在一行以内(没有结束标记),导致python其实是没有匿名函数的。一个callback数组写的难过死。

赖勇浩

mail # laiyonghao.com 通过“googlegroups.com”
发件人当地时间:         发送时间 22:31 (GMT+08:00)。发送地当前时间:上午9:04。 ✆

个人看法:支持 native thread 是它最大的错误。

pansz

pan.shizhu # gmail.com
发件人当地时间:         发送时间 08:35 (GMT+08:00)。发送地当前时间:上午9:15。 ✆

我觉得这些是缺点:

Python 目前为止主要用于服务器端,正因为解释型语言都不可能真正意义上的加密源代码,所以只有部署在服务器端能避免这个问题。

对于 pypy

发件人当地时间: 发送时间 15:12 (GMT+08:00)。发送地当前时间:下午5:05。 ✆ 回复: [email protected]


反馈

创建 by -- ZoomQuiet [2011-12-21 09:09:06]