直接HOLD 住了俺的思路...
- 是也乎!?
- 世界上没有完美的语言
- Python 相比各种开发语言也有缺点,当然的!
可是,是什么呢?!
- 没有 {} ?
- 不支持多CPU ?
大家在学习使用过程中,对 Python 有什么失望的地方?!
- 兼听则明
- 现在不满意的,就是我们努力的方向..
PS:
- 俺现场憋出的回答是:
- 由于 Py 历史上积累的好用模块太多,会导致开发人员更加懒惰,不思进取,不论什么都可以直接搜出可用的现成模块来!
--
人生苦短, Pythonic! 冗余不做,日子甭过!备份不做,十恶不赦!
俺: http://about.me/zoom.quiet
文字协议: http://creativecommons.org/licenses/by-sa/2.5/cn/
要说缺点,肯定是一说能说出一大堆来,只是某人视而不见罢了。如果Python真有那么好,干嘛整个Python3出来,不向后兼容?一个要大修的语言,会没缺点。如果它确实没缺点,那么这次大修本身就是一大缺点。
Pythoner将来的日子不会很好过。
>--
>来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
>规则: http://code.google.com/p/cpyug/wiki/PythonCn
>发言: pyth...@googlegroups.com
>退订: python-cn+...@googlegroups.com (向此发空信即退!)
>详情: http://code.google.com/p/cpyug/wiki/PythonCn
>严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
>强烈: 建议使用技巧: 如何有效地报告Bug http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html
我不同意说python没缺点。但我也不认为python3是一次大修。
在我看来python3最重要变化,一是print之类的语句变成了函数调用,二是默认使用unicode做字符串。
这能算是大修么?至少我个人认为是不算的。
从我的角度来说,python可以提高的地方,
一是运行速度,目前还远不能跟编译型语言比,
二是IDE,还没哪款python的IDE能达到intellij idea和eclipse对java的支持
三是多线程并发执行的支持
至于语言本身,我没感觉到有什么明显的缺点。
> Pythoner将来的日子不会很好过。
>
如果一个人靠一个语言,而不是自己的技术水平活着无论他是XXXer或是YYYer,都不会很好过。
--
Best Regards,
Leo Jay
我看还早着呢。对CPython的第三方库支持不好是硬伤。
pypy之于python就像mono之于.net,openjdk之于java,
大家都说他们好,但都叫好不叫座,真正用的时候,你总是时不时会发现有那么一些地方跟原版兼容性有问题
对于那些写代码用英文,写注释用英文,平时也不用处理非英文数据的人来说,转3的动力的确不强。
我的看法是,
1. 如果你手上已经有2的项目要维护,那就继续用2,不要做迁移。
2. 如果你要新做一个web项目,先去看看cherrypy能不能满足你的要求。如果可以的话,就用3,不行就用2
3. 如果你已经知道你要做什么,先去找找相关的库对3是否支持,如果不行,就用2
4. 其它情况,能用3就用3
总的来说就是能用3就用3,毕竟3是未来的方向,而且的确有相当一些细节上的改进
但如果不能用3的情况下,那就用2,不要勉强。
--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
规则: http://code.google.com/p/cpyug/wiki/PythonCn
发言: pyth...@googlegroups.com
退订: python-cn+...@googlegroups.com (向此发空信即退!)
详情: http://code.google.com/p/cpyug/wiki/PythonCn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
强烈: 建议使用技巧: 如何有效地报告Bug http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html
Python的字符串unicode,寄期望于Python 3
Python的lambda只支持表达式,Python仍然区分表达式与语句,这点导致lambda里没了if(虽然你也可以找很多其它的理由来解释
lambda里的代码不应写得复杂),还有Python的closure
Python函数的tail_call_optimize
"".join 你懂的,Python有些库的方法命名有些奇怪,有些有下划线,有些没有下划线。有些类是全小写,有些类是Camel,Java这些方
面就很好。。。。历史遗留问题啊
Python的文档????我看django文档时,只想着一句话:Read The Fucking Source Code!!!有些函数的文档我
看半天还是没搞清楚倒底怎么个用法,一是函数参数没有类型说明,另一方面,我还是比较喜欢直接的example。(感觉Java的API文档也要比
Python的好很多喔,整洁不少)。
目前就只想到这些 ^O^
说到这个我想起来,python的文档很SB的地方是,它很少说一个方法调用是否会抛异常以及抛什么类型的异常。
比方说int这个函数,它就说了句:如果转入参数不是字符串,会抛TypeError,然后就没了。
要是你因此你只抓TypeError的话就傻了,因为如果字符串不是数字的话,抛的是ValueError。
如果因此,你写try ... except代码都写成
try:
foo()
except:
...
的话,你也可能中招,因为sys.exit()的退出方式就是抛一个异常。如果你foo()有逻辑在一定情况下调用sys.exit来退出的话,
你会发现这个异常被你抓掉了。。。
所以我现在养成习惯,代码都写成:
try:
foo()
except Exception:
...
而更多的方法,比如time.sleep,文档压根就不告诉你,它可能会抛异常。
http://docs.python.org/library/functions.html#int
http://docs.python.org/library/time.html#time.sleep
如果你认为所谓的「编码问题」指的是这个的话你就大错特错了。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 什么的,你看不到其
中的中文。
--
Best regards,
lilydjwg
Linux Vim Python 我的博客:
http://lilydjwg.is-programmer.com/
--
A: Because it obfuscates the reading.
Q: Why is top posting so bad?
> --
> 来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
> 规则: http://code.google.com/p/cpyug/wiki/PythonCn
> 发言: pyth...@googlegroups.com
> 退订: python-cn+...@googlegroups.com (向此发空信即退!)
> 详情: http://code.google.com/p/cpyug/wiki/PythonCn
> 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
> 强烈: 建议使用技巧: 如何有效地报告Bug http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html
--
--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
规则: http://code.google.com/p/cpyug/wiki/PythonCn
发言: pyth...@googlegroups.com
退订: python-cn+unsub...@googlegroups.com (向此发空信即退!)
1. 匿名函数。Py3一度要取消lambda,脑残了不是。正确的做法应该是进一步加强lambda,搞匿名函数
2. 莫名其妙的local域。我写twisted的时候,没少吃药。稍微不留神就掉坑里。
3. 很多类库的port都不完整。socket,readline,ncurse 。。。
4. 为什么要区分表达式和语句?有这个必要吗?表达式全部返回None,或者专门定义一个Void岂不是更好?
5. Py的标准类库应该修订一下了。标准类库的质量良莠不齐,有些类库明显落伍。htmllib,
sgmllib ,HTMLParser,现在还有人用吗,为什么不用lxml?re,建议用pcre;ConfigParser,建议去掉。
6. 进一步增强easy_intall。应该设计类似rpm, dpkg这样的Python library package。以类似yum,apt的方式分发这种包。
On Wed, Dec 21, 2011 at 02:24:04PM +0800, Zoom.Quiet wrote:
> 在昨天内部分享交流中,俺回顾了 PyCon2011China 中透露出的 Py 最新使用/发展和体验;
> 最后有同学问:
> Python 有什么缺点!?
>
> 直接HOLD 住了俺的思路...
> - 是也乎!?
> - 世界上没有完美的语言
> - Python 相比各种开发语言也有缺点,当然的!
> 可是,是什么呢?!
>
> - 没有 {} ?
> - 不支持多CPU ?
>
> 大家在学习使用过程中,对 Python 有什么失望的地方?!
> - 兼听则明
> - 现在不满意的,就是我们努力的方向..
>
> PS:
> - 俺现场憋出的回答是:
> - 由于 Py 历史上积累的好用模块太多,会导致开发人员更加懒惰,不思进取,不论什么都可以直接搜出可用的现成模块来!
>
> --
> 人生苦短, Pythonic! 冗余不做,日子甭过!备份不做,十恶不赦!
> 俺: http://about.me/zoom.quiet
> 文字协议: http://creativecommons.org/licenses/by-sa/2.5/cn/
>
> --
> 来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
> 规则: http://code.google.com/p/cpyug/wiki/PythonCn
> 发言: pyth...@googlegroups.com
> 退订: python-cn+...@googlegroups.com (向此发空信即退!)
好大的题目,我干脆写完发blog得了。
python的整个系统,我其实有非常多的不满。但是用任何一门语言都是取舍问题,如果有一门语言,库够多,已读,易用,性能高,我毫不犹豫立刻转过去。python的强处在于庞大的库,还有非常好的易读和易用性。但是相比来说,性能一直是个问题。python的实现性能大约和C相差五倍上下。如果是大规模计算问题,大约能差10倍以上。当然,我们可以写C扩展,但是这就不是使用python了。我们也可以说,很多时候我们不需要这么快的速度。这是个事实,但是不改变python性能差的事实。
python不但性能差,还有GIL这个玩意。以至于我现在对高并发计算都采取多进程的模式。多进程模式的通讯效率肯定比多进程低,而且麻烦。
另外,python在底层设计上,也表现出很强的实用主义倾向。这是比较外交术语的词汇,更加直白的说法应当是,混乱,不知所谓。在闭包设计上采用free
variable设计,而不是lisp中的environs设计。区别?你试试看在外层闭包中from lib import
*。由于引入不定个数名称,free variable无法处理。类似的问题还有LEGB规则,新手往往要花很长时间研究这个例子究竟是怎么错的:
a = 1
def f():
print a
a = 2
我勒个去,这种反直观反人类的事情都有,还敢说自己易读。
还有坑爹的元编程,这东西根本是坑爹中的坑爹货。如果你用过多重继承,大概就知道python的整个OO系统看起来根本是大型的仿真,到处都是乱糟糟的。C++怎么解决多重继承的?你最好别用(真心说,这可比python更加坑爹)。java怎么解决多重继承的,只能继承Interface。其实这是变相的变成了Interface-Impalement模式。python怎么解决的?MRO!为什麽一个类加个__metaclass__就会改变性质啊,为什麽一个类去生成另一个类的写法是——我基本不记得了,反正web.py里面有用到,需要的话去炒栗子吧。为什麽方法要隐藏居然要改名字加__啊。你到底是在做OO还是在看起来像OO的东西上狂打补丁啊魂淡。
lambda表达式弱智。我和人讨论过,lambda是否是图灵完备的。结论还是完备的,不过需要借助Y
combinator。何必呢?由于强调lambda的快速特性,因此将lambda强制在一行以内(没有结束标记),导致python其实是没有匿名函数的。一个callback数组写的难过死。
语法糖太多了点,当然,这是纯粹的个人感觉。语法糖是把双刃剑,用的好,可以简化编写和阅读,但是太多,往往容易引入语法混乱和额外的约束。
另外,语言的自构建特性混乱。虽说不是每门语言都强调自构建特性,但是通常而言,都是使用C实现一个内核,由内核实现一些基础操作。再由基础操作实现更复杂的操作。每层的边界都是比较清晰的。谁来告诉我,python中有多少库在移植时是由纯python实现的?库的相互依赖层级是?
python的沙盒化也是个问题,如果沙盒做的够好,我完全可以把python作为一个客户级别的平台。用C写一个很简单的类似浏览器的东西,下载一个URL的python包回去运行(或者仅仅检查更新)。从而保证本地效果/跨平台/安全性。现在?一个都保证不了。我连把一个python包转移到另一台同构设备上都很麻烦(如果两者不是严格匹配,例如系统差异,系统版本差异)无论是web开发还是移动终端开发都必须走传统模式。
On 12月21日, 下午7时00分, "Zoom.Quiet" <zoom.qu...@gmail.com> wrote:
> 在 2011年12月21日 下午6:56,shhgs <shhgs.efh...@gmail.com> 写道:> 问题还是很多的
On 12月21日, 下午10时06分, Shell Xu <shell909...@gmail.com> wrote:
> > 强烈: 建议使用技巧: 如何有效地报告Bughttp://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html
>
> 好大的题目,我干脆写完发blog得了。
>
> python的整个系统,我其实有非常多的不满。但是用任何一门语言都是取舍问题,如果有一门语言,库够多,已读,易用,性能高,我毫不犹豫立刻转过去。python的强处在于庞大的库,还有非常好的易读和易用性。但是相比来说,性能一直是个问题。python的实现性能大约和C相差五倍上下。如果是大规模计算问题,大约能差10倍以上。当然,我们可以写C扩展,但是这就不是使用python了。我们也可以说,很多时候我们不需要这么快的速度。这是个事实,但是不改变python性能差的事实。
> python不但性能差,还有GIL这个玩意。以至于我现在对高并发计算都采取多进程的模式。多进程模式的通讯效率肯定比多进程低,而且麻烦。
>
> 另外,python在底层设计上,也表现出很强的实用主义倾向。这是比较外交术语的词汇,更加直白的说法应当是,混乱,不知所谓。在闭包设计上采用free
> variable设计,而不是lisp中的environs设计。区别?你试试看在外层闭包中from lib import
> *。由于引入不定个数名称,free variable无法处理。类似的问题还有LEGB规则,新手往往要花很长时间研究这个例子究竟是怎么错的:
> a = 1
> def f():
> print a
> a = 2
> 我勒个去,这种反直观反人类的事情都有,还敢说自己易读。
>
> 还有坑爹的元编程,这东西根本是坑爹中的坑爹货。如果你用过多重继承,大概就知道python的整个OO系统看起来根本是大型的仿真,到处都是乱糟糟的。C++怎么解决多重继承的?你最好别用(真心说,这可比python更加坑爹)。java怎么解决多重继承的,只能继承Interface。其实这是变相的变成了Interface-Impalement模式。python怎么解决的?MRO!为什麽一个类加个__metaclass__就会改变性质啊,为什麽一个类去生成另一个类的写法是----我基本不记得了,反正web.py里面有用到,需要的话去炒栗子吧。为什麽方法要隐藏居然要改名字加__啊。你到底是在做OO还是在看起来像OO的东西上狂打补丁啊魂淡。
--
web site:http://laiyonghao.com
twitter: http://twitter.com/laiyonghao
> --
> 来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
> 规则: http://code.google.com/p/cpyug/wiki/PythonCn
> 发言: pyth...@googlegroups.com
> 退订: python-cn+...@googlegroups.com (向此发空信即退!)
> 详情: http://code.google.com/p/cpyug/wiki/PythonCn
> 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
> 强烈: 建议使用技巧: 如何有效地报告Bug http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html
--
无能者无所求,饱食而遨游,泛若不系之舟
blog: http://shell909090.com/blog/
twitter: http://twitter.com/shell909090
On 12月21日, 下午10时30分, Shell Xu <shell909...@gmail.com> wrote:
> 别的不说,apt是绝对没有可能的,除非pip自行组建仓库。
> apt官方的repos必须符合dsfg规范,我现在在做打包,基本就是每个文件级别核查文件的版权和授权,另外还得处理一堆杂七杂八的事情。如果要直接进入apt的源,除非pip摒弃不支持dsfg规范的包。
>
> > 严正: 理解列表! 智慧提问!http://wiki.woodpecker.org.cn/moin/AskForHelp
> > 强烈: 建议使用技巧: 如何有效地报告Bughttp://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html
为什么你感觉应该是list, tuple的方法呢?
如果把join理解成连接,那显然应该是用'-'来连接一个列表,怎么会是用一个列表来连接一个'-'呢?
在我看来,硬要放到list里去的话,应该叫joined_by才行吧。
> 而如果要保留字符串的join方法的话,应该可以接受多个参数:
> '-'.join('a','b','c')
> 'a-b-c'
>
2 其实不存在混淆 str 跟 unicode 的问题,需要 str 的地方会自动把 unicode 转成 str,需要 unicode
的地方会自动把 str 转成 unicode。
问题在于缺省的转换使用的 ascii 编码,因此只要含有中文的,一律不能通过 python2
的“自动类型转换”。所以编程过程中凡是存在这种“自动类型转换”的环节,一律需要改成手动转换。——我以为只要理解这个,几乎可以解决python2
90%以上的编码问题。
> 经常会遇到这种情况。然后你 encode 或者 decode 一下就解决了。问题是,这种
> 问题没有规律。
我觉得很有规律。
> 还有一个问题是,
>>>> '中文'
> '\xe4\xb8\xad\xe6\x96\x87'
>>>> u'中文'
> u'\u4e2d\u6587'
> repr 的结果不可读。这意味你 print 一个 list 或者 dict 什么的,你看不到其
> 中的中文。
这个问题产生的原因跟上述是一样的,py2 缺省输出ascii ,不是 utf-8 。。。因而自然不能看到。
但是如果你只是要 print 的话,一个非常非常简单的办法是:输出为 json,并指定为 utf-8 格式,json编码器增加
default 函数为 repr(obj)。这样的输出几乎跟 repr 完全一致,除了那些乱码中文变成了真正的 utf-8 中文。
其实说了那么多, py3 对国人唯一的重要改进仅仅是“缺省编码由 ascii 修改为了
utf-8”而已。为了这点点改变去伤筋动骨的大修整个语言,并且弄得向后不兼容。有点太过了。简单的修改一下 python2
源代码就能做到的事。。。
Python 目前为止主要用于服务器端,正因为解释型语言都不可能真正意义上的加密源代码,所以只有部署在服务器端能避免这个问题。
2011/12/21 Zoom.Quiet <zoom....@gmail.com>:
可以自行组建repos,但是这样就要自行理清多个发行的依赖关系。
from miui
On Dec 22, 9:20 am, Shell Xu <shell909...@gmail.com> wrote:
> 可以自行组建repos,但是这样就要自行理清多个发行的依赖关系。
>
> from miui
> > 严正: 理解列表! 智慧提问!http://wiki.woodpecker.org.cn/moin/AskForHelp
> 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
> 强烈: 建议使用技巧: 如何有效地报告Bug http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html
--
我想起了程序员A,发现Event、Observer很好用很灵活(那个面向事件面向消息编程嘛),就所有的调用都bindEvent再那个
triggerEvent,明明只需要一个callback就解决了,非说Event更灵活更具可扩展性
就像那些刚看了些OO设计模式的,就在10行代码内用了20种设计模式,这就是那些"懂OO的Java程序员"干的事
然后另一个程序员B,看了些Lisp,然后就一个劲的在python中lambda map reduce filter ,明明用Class,用对象
实例来表示更方便的,非要把变量放到closure中,然后就像个黑盒子一样调方法。。。。然后这些程序员还喜欢不用if else,非要用and
or什么的。悲催啊
Python中的OO和lambda确实实现的不咱地,有谁能解释下__new__与__init__的功能??这方面Ruby又是一个好的学习对象,
Ruby比Java更OO,但更具有一致性,比如new也是一个方法(Ruby中的说法是向对象发送一个new的消息,又是面向消息嘛,呵呵)
我喜欢Ruby的一个原因是它其实像Lisp+Smalltalk。说起来,论OO特性,Python没地位,论FP特性,Python也没地位,论标
准库,Python的工具库很多,但标准库似乎有些Out。剩下的只有Python语法简单了,但Python还有神马的元编程,多继承,我我
我。。。
所以用Python,即不要太OO,也不要太FP,因为它在这两方面都不擅长(我只说不要太OO,太FP,不是说不要OO,不要FP哦,呵呵)。也不要
指望Python运行速度多快,在这方面我已经开始使用Go语言了。
Keep it simple,才是Python之禅!^O^
On Dec 21, 6:17 pm, zhao shichen <shichen.z...@gmail.com> wrote:
> 总之,越来越多的"懂OO的java工程师"进入python领域,导致python越来越差劲
>
On Dec 21, 10:06 pm, Shell Xu <shell909...@gmail.com> wrote:
> > 严正: 理解列表! 智慧提问!http://wiki.woodpecker.org.cn/moin/AskForHelp
> > 强烈: 建议使用技巧: 如何有效地报告Bughttp://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html
>
> 好大的题目,我干脆写完发blog得了。
>
> python的整个系统,我其实有非常多的不满。但是用任何一门语言都是取舍问题,如果有一门语言,库够多,已读,易用,性能高,我毫不犹豫立刻转过去。python的强处在于庞大的库,还有非常好的易读和易用性。但是相比来说,性能一直是个问题。python的实现性能大约和C相差五倍上下。如果是大规模计算问题,大约能差10倍以上。当然,我们可以写C扩展,但是这就不是使用python了。我们也可以说,很多时候我们不需要这么快的速度。这是个事实,但是不改变python性能差的事实。
> python不但性能差,还有GIL这个玩意。以至于我现在对高并发计算都采取多进程的模式。多进程模式的通讯效率肯定比多进程低,而且麻烦。
>
> 另外,python在底层设计上,也表现出很强的实用主义倾向。这是比较外交术语的词汇,更加直白的说法应当是,混乱,不知所谓。在闭包设计上采用free
> variable设计,而不是lisp中的environs设计。区别?你试试看在外层闭包中from lib import
> *。由于引入不定个数名称,free variable无法处理。类似的问题还有LEGB规则,新手往往要花很长时间研究这个例子究竟是怎么错的:
> a = 1
> def f():
> print a
> a = 2
> 我勒个去,这种反直观反人类的事情都有,还敢说自己易读。
>
> 还有坑爹的元编程,这东西根本是坑爹中的坑爹货。如果你用过多重继承,大概就知道python的整个OO系统看起来根本是大型的仿真,到处都是乱糟糟的。C++怎么解决多重继承的?你最好别用(真心说,这可比python更加坑爹)。java怎么解决多重继承的,只能继承Interface。其实这是变相的变成了Interface-Impalement模式。python怎么解决的?MRO!为什麽一个类加个__metaclass__就会改变性质啊,为什麽一个类去生成另一个类的写法是----我基本不记得了,反正web.py里面有用到,需要的话去炒栗子吧。为什麽方法要隐藏居然要改名字加__啊。你到底是在做OO还是在看起来像OO的东西上狂打补丁啊魂淡。
> 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
> 强烈: 建议使用技巧: 如何有效地报告Bug http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html
--
在一个Object内部,用函数调用去模拟消息还算是合适的,如果在Object之间还用函数调用去模拟就很别扭了。这些语言都试图让这种方法看上去不
那么别扭,谁都不敢去实现真正的消息机制。
真心高兴引出了这么多干货! 收录:
http://wiki.woodpecker.org.cn/moin/MiscItems/2011-12-21
服务器端,确实不是大问题,桌面端,性能问题大了。
就弄个还算简单的UI程序:Ulipad,这算是写得不错的程序了吧?你把焦点移到菜单上,然后按住左键从右扫到左(就是循环切换各个子菜单),程程程CPU就上100%了,而且还卡,我发现这还真不是程序员的问题,而是只要纯
python 做的 UI ,界面必卡。实验对象:1.6G双核这种级别的电脑,对于PC来说算是低配置,但是这已经比顶级手机的配置更高,如果这种界面切换的性能都达不到,python
在手机上还有什么戏?
这是两回事:C++的发明者曾多次声称,C++ 是另外一种语言,并且他本人曾评价:C++唯一的缺点就是哪些与C兼容的部分。——至于用 C
的语法写 C++ 程序,在我看来那只是菜鸟程序员才做的事情。靠谱的程序员要至少应当把那些 C 代码封装成纯 C
库,好歹可以让这部分代码编译不需要 C++ 编译器。
另外发明 C++ 并不是因为 “C有什么不良特性”,而是因为“人们需要另外一种语言来做另外一些事情”,C语言在现在仍然生存得很好,它被用于做很多系统级得事情。C++仍然在主机游戏领域独领风骚。他们根本就是不同的语言。
C++ 从来就没有取代 C ,C 也没有取代 C++,C++98, C++1x 都在发展,而 C89, C99, C0x
也都在独立的升级发展。
如果 py3 的发明者说:这就是不同的语言,这个语言不叫 python,那么当然 P 话没有。
问题在于它从来没有说这是不同的语言,而是希望让 py3 替代 py2。这问题就出来了,人们 py2
用得好好的,你把语法改了做什么呢?还不兼容,有什么变革非要用修改语法的方式实现么?引入一种新语法,同时保证向后兼容不行么?更何况在很多标准的性能测试框架中,py3成绩还比py2低。
C99 能不能编译 C89 代码?C0x 能不能编译 C99 代码?都可以的!
C++1x 能不能编译 C++98 代码?也可以的!
py3 能不能跑 py2 代码?你们懂得。。。
> 多线程并发?引用一句都知道的大牛说的话“线程是那些进程生成代价昂贵,不支持简单RPC的系统上的废品。它需要彼此间依赖过多的状态标志和底层细节”。你想获得优良的多核性能,就在UNIX/Linux下面设计多进程程序!而不是要求py去完美支持这些微软搞出来的烂概念!
这个赞成。
> # 区分表达式和语句?我不觉得foo = [];
> foo.append(42)有什么不好,至少从代码可读性上来讲。代码大全里也提倡,应该把一行物理单元只对应一行逻辑单元,这样代码的可读性才会更好!
这个赞成。
> 弱到不能再弱的lambda?lambda这个东西,可以用普通函数替代,而且个人感觉,lambda用多了,会让代码的可读性很低。py不是lisp,更不是图灵机!
这个不赞成,lambda 函数就是匿名函数,应当具有普通函数的全部功能,否则就失去了意义。现在的 lambda
函数就是个试验品,连半成品都算不上。我宁可看到 lambda 被去掉,也不愿意看到如此残废的 lambda 功能。
在 2011年12月22日 上午11:18,Lan Soda <h...@xxoogo.com> 写道:
如果你需要调用一个“非常复杂的第三方服务”,并且“0.01秒内会产生上万个请求”,你还会只有一台服务器?
在 2011-12-22 08:24:53,pansz <pan.s...@gmail.com> 写道: >2011/12/21 依云 <lily...@gmail.com
>:
>> 如果你认为所谓的「编码问题」指的是这个的话你就大错特错了。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)
>
>2 其实不存在混淆 str 跟 unicode 的问题,需要 str 的地方会自动把 unicode 转成 str,需要 unicode
>的地方会自动把 str 转成 unicode。
>问题在于缺省的转换使用的 ascii 编码,因此只要含有中文的,一律不能通过 python2
>的"自动类型转换"。所以编程过程中凡是存在这种"自动类型转换"的环节,一律需要改成手动转换。----我以为只要理解这个,几乎可以解决python2
>90%以上的编码问题。
>
>> 经常会遇到这种情况。然后你 encode 或者 decode 一下就解决了。问题是,这种
>> 问题没有规律。
>我觉得很有规律。
>
>> 还有一个问题是,
>>>>> '中文'
>> '\xe4\xb8\xad\xe6\x96\x87'
>>>>> u'中文'
>> u'\u4e2d\u6587'
>> repr 的结果不可读。这意味你 print 一个 list 或者 dict 什么的,你看不到其
>> 中的中文。
>这个问题产生的原因跟上述是一样的,py2 缺省输出ascii ,不是 utf-8 。。。因而自然不能看到。
>但是如果你只是要 print 的话,一个非常非常简单的办法是:输出为 json,并指定为 utf-8 格式,json编码器增加
>default 函数为 repr(obj)。这样的输出几乎跟 repr 完全一致,除了那些乱码中文变成了真正的 utf-8 中文。
>
>
>其实说了那么多, py3 对国人唯一的重要改进仅仅是"缺省编码由 ascii 修改为了
>utf-8"而已。为了这点点改变去伤筋动骨的大修整个语言,并且弄得向后不兼容。有点太过了。简单的修改一下 python2
>源代码就能做到的事。。。
>
>--
>来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
>规则: http://code.google.com/p/cpyug/wiki/PythonCn如果python开始使用花括号,我就要考虑换语言了。
当初第一眼注意到这个语言就是看上它强制使用缩进这一点的。
那些人还挺奇怪的,喜欢其它语言的特性,但坚持使用python,为啥不去用已经支持花括号的语言呢?
--
Best Regards,
Leo Jay
我的看法:
1. 上述讨论,就算在这几个讨论的人中间也不大可能达成一致意见,比方说我强烈反对花括号和匿名函数
2. 有的东西提意见容易实现起来难,比方说要提速,要去掉GIL。
3. 有的东西,像lambda,在3里面本来就要去掉的,后来N多人强烈要求才保留的,想加强?我看难。
4. 以我对python-dev的了解来看,他们对提意见(尤其是比较虚的意见)不是太热心。你有小改进,就给出patch,他们心情好,找个空看看,说不定就接受了。大意见的话,写篇漂漂亮亮的PEP,速度快的话,1,2年就能被接受。自己给个patch,以及对应的benchmark可能会加速一些。
你要是想着,去bugs.python.org扔个issue就跑,然后希望他们会快速反应,那也太不切实际了些,那里还有3000多issue没解决呢。
我不是在说他们不好,一个语言,谁随便提个想法,开发人员就改语言,这才是灾难。
5. 另外一些,比方说命名问题,unicode问题,他们已经开始做了,这方面3比2好不少。
我觉得这才是正确的态度。我对python的吐槽一堆一堆,你可见过我去修改?
我自己写项目,做debian打包的结论是——除非是自己天天用的,否则鬼才高兴改。真的是个严重问题,绝对就自己想法搞定了。然后再去社区提交一下patch,大家看看——我也是,我也是。这个问题解决掉,这叫靠谱。
要是为了一点小细节问题就做东做西,很快志愿者就全跑光了。
总之,越来越多的“懂OO的java工程师“进入python领域,导致python越来越差劲
在 2011年12月21日 下午6:10,zhao shichen <shiche...@gmail.com>写道:1.很多标准库很烂;而很多很好的库竟然不在标准库之中,比如chardet等等,而xml之类没用的东西反而有
2.lambda演算太弱:如果有类似(x,y)->这样的语法就更好了;python3竟然进一步的削弱了lambda演算的能力
3.字符串的join看起来太奇怪了
4.发展了自己的一套正则表达式,直接用pcre不好吗。而且这个库的使用我感觉不友好。
5.听说python的unix域socket的性能不佳,仅仅是听说,在我的简单测试中感觉unix域socket的速度和普通socket速度一样:应该快一倍才对。
6.没有标准的IPC函数,比如共享内存,消息队列等,这些东西很有用阿
7.引入了太多java里面的垃圾概念,就是那些面向对象的东西。导致本来很简单的东西搞得很复杂,最典型的例子是logging模块,这个模块太烂了
8.socke的函数支持不全,比如sendfile等等都没有支持
9.很不喜欢元类编程,把本来很简单的东西搞复杂,都是java里面的垃圾概念
在我的项目组中,基本上不准编写类,只允许编写函数,目的就是为了方便集成和控制代码;
象很多java项目比如eclipse一样搞得又大又臭是绝对没法接受的
--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
规则: http://code.google.com/p/cpyug/wiki/PythonCn
发言: pyth...@googlegroups.com
退订: python-cn+unsub...@googlegroups.com (向此发空信即退!)
--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
规则: http://code.google.com/p/cpyug/wiki/PythonCn
发言: pyth...@googlegroups.com
退订: python-cn+...@googlegroups.com (向此发空信即退!)
有句话叫世界上只有两种语言,一种被人骂,一种没人用。
事实上,前面说的,有相当一些属于众口难调,而不是语言缺陷。
没想到它是来自 java,现在明白了。这些完全不顾效率跟优雅的大猛兽大都是从 java 来的。
这个可能主要是语法的优雅层面以及效率层面。首先学会配置这个 logger 需要至少阅读30分钟的文档(前提还是英文水平流畅),其次调用一个
logger 的开销有点大,再其次,当某个对应的级别被禁止的时候,剩余开销不能尽可能的小。
——觉得它不烂的,不妨用调试器跟踪看看调用一次 logger 究竟有多大的开销。更不妨试试对一个被关闭的级别,logger.debug
调用一次要花多大的开销。——一次 log 函数花如此大的开销对于 C 背景的人来说通常是不可接受的。
2011/12/22 Marlon Yao <yaol...@gmail.com>:
> 先不说面向对象好不好,python本身主要就是面向对象的,面向对象也不只在java中有,好多语言都有,也不是最先自java始。至于logging模块,没错,完全模仿java中的log4j,确实有些不pythonic,但我没觉得它烂在哪里。没想到它是来自 java,现在明白了。这些完全不顾效率跟优雅的大猛兽大都是从 java 来的。
这个可能主要是语法的优雅层面以及效率层面。首先学会配置这个 logger 需要至少阅读30分钟的文档(前提还是英文水平流畅),其次调用一个
logger 的开销有点大,再其次,当某个对应的级别被禁止的时候,剩余开销不能尽可能的小。
——觉得它不烂的,不妨用调试器跟踪看看调用一次 logger 究竟有多大的开销。更不妨试试对一个被关闭的级别,logger.debug
调用一次要花多大的开销。——一次 log 函数花如此大的开销对于 C 背景的人来说通常是不可接受的。
这些完全不顾效率跟优雅的大猛兽大都是从 java 来的。
oo不oo,其实在于你怎么看
On Dec 22, 10:11 am, CJ <jamcha...@gmail.com> wrote:
> 不要老是这样说吧,不能因噎废食,我看GTK库的C语言接口时,发现实例方法在C中的实现无非是将this struct一致作为函数第一个参数而
> 已。
> 你要是在Python中,明明可以写成socket.read(length)的,非要写成read(socket,length),然后方法名又会冲
> 突,又要写成socket_read(socket,length)或是socketlib.read(socket,length),不成了胡折腾了
> 吗,呵呵
>
> 我想起了程序员A,发现Event、Observer很好用很灵活(那个面向事件面向消息编程嘛),就所有的调用都bindEvent再那个
> triggerEvent,明明只需要一个callback就解决了,非说Event更灵活更具可扩展性
> 就像那些刚看了些OO设计模式的,就在10行代码内用了20种设计模式,这就是那些"懂OO的Java程序员"干的事
>
> 然后另一个程序员B,看了些Lisp,然后就一个劲的在python中lambda map reduce filter ,明明用Class,用对象
> 实例来表示更方便的,非要把变量放到closure中,然后就像个黑盒子一样调方法。。。。然后这些程序员还喜欢不用if else,非要用and
> or什么的。悲催啊
>
> Python中的OO和lambda确实实现的不咱地,有谁能解释下__new__与__init__的功能??这方面Ruby又是一个好的学习对象,
> Ruby比Java更OO,但更具有一致性,比如new也是一个方法(Ruby中的说法是向对象发送一个new的消息,又是面向消息嘛,呵呵)
>
> 我喜欢Ruby的一个原因是它其实像Lisp+Smalltalk。说起来,论OO特性,Python没地位,论FP特性,Python也没地位,论标
> 准库,Python的工具库很多,但标准库似乎有些Out。剩下的只有Python语法简单了,但Python还有神马的元编程,多继承,我我
> 我。。。
>
> 所以用Python,即不要太OO,也不要太FP,因为它在这两方面都不擅长(我只说不要太OO,太FP,不是说不要OO,不要FP哦,呵呵)。也不要
> 指望Python运行速度多快,在这方面我已经开始使用Go语言了。
> Keep it simple,才是Python之禅!^O^
>
> On Dec 21, 6:17 pm, zhao shichen <shichen.z...@gmail.com> wrote:
>
>
>
>
>
>
>
> > 总之,越来越多的"懂OO的java工程师"进入python领域,导致python越来越差劲
>
> > 在 2011年12月21日 下午6:10,zhao shichen <shichen.z...@gmail.com>写道:
>
> > > 1.很多标准库很烂;而很多很好的库竟然不在标准库之中,比如chardet等等,而xml之类没用的东西反而有
> > > 2.lambda演算太弱:如果有类似(x,y)->这样的语法就更好了;python3竟然进一步的削弱了lambda演算的能力
> > > 3.字符串的join看起来太奇怪了
> > > 4.发展了自己的一套正则表达式,直接用pcre不好吗。而且这个库的使用我感觉不友好。
>
> > > 5.听说python的unix域socket的性能不佳,仅仅是听说,在我的简单测试中感觉unix域socket的速度和普通socket速度一样:应该快 一倍才对。
> > > 6.没有标准的IPC函数,比如共享内存,消息队列等,这些东西很有用阿
> > > 7.引入了太多java里面的垃圾概念,就是那些面向对象的东西。导致本来很简单的东西搞得很复杂,最典型的例子是logging模块,这个模块太烂了
> > > 8.socke的函数支持不全,比如sendfile等等都没有支持
> > > 9.很不喜欢元类编程,把本来很简单的东西搞复杂,都是java里面的垃圾概念
>
> > > 在我的项目组中,基本上不准编写类,只允许编写函数,目的就是为了方便集成和控制代码;
>
> > > 象很多java项目比如eclipse一样搞得又大又臭是绝对没法接受的
>
> > > --
> > > 呆痴木讷,君子四德
>
> > --
> > 呆痴木讷,君子四德
java 倾向于过多的封装化抽象化层级,本来一个函数能解决的问题可能要花四级函数调用加三四个不同的类实例去解决。
解释型语言中,没有哪个的 JIT 能跟 Java 比的。很多胶水代码都被优化掉了。所以 Java
这么做,副作用不太明显,但在其他语言中这么做不合适了。直接抄 java 代码框架效率肯定会偏低。
�� 2011/12/21 14:24, Zoom.Quiet �:
> �������ڲ����?����,���ع��� PyCon2011China ��¶���� Py ����ʹ��/��չ������;
> �����ͬѧ��:
> Python ��ʲôȱ��!?
>
> ֱ��HOLD ס�˰���˼·...
> - ��Ҳ��!?
> - ������û������������
> - Python ��ȸ��ֿ�������Ҳ��ȱ��,��Ȼ��!
> ����,��ʲô��?!
>
> - û�� {} ?
> - ��֧�ֶ�CPU ?
>
> �����ѧϰʹ�ù����,�� Python ��ʲôʧ��ĵط�?!
> - ��������
> - ���ڲ������,��������Ŭ���ķ���..
>
> PS:
> - ���ֳ�����Ļش���:
> - ���� Py ��ʷ�ϻ��۵ĺ���ģ��̫�࣬�ᵼ�¿�����Ա������裬��˼��ȡ������ʲô������ֱ���ѳ����õ��ֳ�ģ����!
>
c++的多重继承会改变指针类型转换特性。
要么他干脆彻底不兼容c。
from miui
--
Python的Object & Class 系统有逻辑上的问题
1. Object支持了__eq__方法,为什么还要实现__ne__方法?很基本的哲学道理,一个可推导的世界中,A==B为真,则A!=B一定为
假,__ne__方法大家都不会用,那就应该人Python中去掉,免得引起混乱
2. classobj与type这两个东西确实该去掉一个,鸡乎?蛋乎?(Python 3去掉了classobj)
Python的字符串unicode,寄期望于Python 3
Python的lambda只支持表达式,Python仍然区分表达式与语句,这点导致lambda里没了if(虽然你也可以找很多其它的理由来解释
lambda里的代码不应写得复杂),还有Python的closurePython函数的tail_call_optimize
"".join 你懂的,Python有些库的方法命名有些奇怪,有些有下划线,有些没有下划线。有些类是全小写,有些类是Camel,Java这些方
面就很好。。。。历史遗留问题啊
Python的文档????我看django文档时,只想着一句话:Read The Fucking Source Code!!!有些函数的文档我
看半天还是没搞清楚倒底怎么个用法,一是函数参数没有类型说明,另一方面,我还是比较喜欢直接的example。(感觉Java的API文档也要比
Python的好很多喔,整洁不少)。目前就只想到这些 ^O^
On Dec 21, 2:24 pm, "Zoom.Quiet" <zoom....@gmail.com> wrote:
> 在昨天内部分享交流中,俺回顾了 PyCon2011China 中透露出的 Py 最新使用/发展和体验;
> 最后有同学问:
> Python 有什么缺点!?
>
> 直接HOLD 住了俺的思路...
> - 是也乎!?
> - 世界上没有完美的语言
> - Python 相比各种开发语言也有缺点,当然的!
> 可是,是什么呢?!
>
> - 没有 {} ?
> - 不支持多CPU ?
>
> 大家在学习使用过程中,对 Python 有什么失望的地方?!
> - 兼听则明
> - 现在不满意的,就是我们努力的方向..
>
> PS:
> - 俺现场憋出的回答是:
> - 由于 Py 历史上积累的好用模块太多,会导致开发人员更加懒惰,不思进取,不论什么都可以直接搜出可用的现成模块来!
>
> --
问题还是很多的1. 匿名函数。Py3一度要取消lambda,脑残了不是。正确的做法应该是进一步加强lambda,搞匿名函数
2. 莫名其妙的local域。我写twisted的时候,没少吃药。稍微不留神就掉坑里。
3. 很多类库的port都不完整。socket,readline,ncurse 。。。
4. 为什么要区分表达式和语句?有这个必要吗?表达式全部返回None,或者专门定义一个Void岂不是更好?
5. Py的标准类库应该修订一下了。标准类库的质量良莠不齐,有些类库明显落伍。htmllib,
sgmllib ,HTMLParser,现在还有人用吗,为什么不用lxml?re,建议用pcre;ConfigParser,建议去掉。
6. 进一步增强easy_intall。应该设计类似rpm, dpkg这样的Python library package。以类似yum,apt的方式分发这种包。
On Wed, Dec 21, 2011 at 02:24:04PM +0800, Zoom.Quiet wrote:
> 在昨天内部分享交流中,俺回顾了 PyCon2011China 中透露出的 Py 最新使用/发展和体验;
> 最后有同学问:
> Python 有什么缺点!?
>
> 直接HOLD 住了俺的思路...
> - 是也乎!?
> - 世界上没有完美的语言
> - Python 相比各种开发语言也有缺点,当然的!
> 可是,是什么呢?!
>
> - 没有 {} ?
> - 不支持多CPU ?
>
> 大家在学习使用过程中,对 Python 有什么失望的地方?!
> - 兼听则明
> - 现在不满意的,就是我们努力的方向..
>
> PS:
> - 俺现场憋出的回答是:
> - 由于 Py 历史上积累的好用模块太多,会导致开发人员更加懒惰,不思进取,不论什么都可以直接搜出可用的现成模块来!
>
> --
> 人生苦短, Pythonic! 冗余不做,日子甭过!备份不做,十恶不赦!
> 俺: http://about.me/zoom.quiet
> 文字协议: http://creativecommons.org/licenses/by-sa/2.5/cn/
>
我还是更喜欢显式指定 self,这样方法和函数更像,很多时候可以混在一起用,
比如方法来自内建、函数来自插件的时候。
而且还可以这样用:SomeClass.somemethod(self, args)。比如 SomeClass 是自
己的某个指定超类。
其实,我很希望方法是函数的子类就好了。
至于 interface,我觉得 golang 做得最好(虽然我已经不太记得了)。Java 里
要求太严了,必须自己说实现了某个 interface 才行,interface 的要求都实现
了不「办证」都不行,而且 interface 里不能提供默认值。假设定义个 Eq
interface,实现它的类实现了相等性比较:== 和 != 两个方法。在 Java 里,所
有实现 Eq 的类都得实现这两者,而不能说,如果其中之一没有实现,那么没实现
的那个就是另外一个值的取反。
> --
> 来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
> 规则: http://code.google.com/p/cpyug/wiki/PythonCn
> 发言: pyth...@googlegroups.com
> 退订: python-cn+...@googlegroups.com (向此发空信即退!)
> 详情: http://code.google.com/p/cpyug/wiki/PythonCn
> 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
> 强烈: 建议使用技巧: 如何有效地报告Bug http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html
--
Best regards,
lilydjwg
Linux Vim Python 我的博客:
http://lilydjwg.is-programmer.com/
--
A: Because it obfuscates the reading.
Q: Why is top posting so bad?
潜了好长时间水了,这回有一点想法:Python要是能推出类似enum,
interface等元素,完善oop支持就好了,现在的oop尽管够用,还是比不上java。
还有就是那个self,尽管增加了python的弹性,却让人很不习惯,为什么不在每次函数值行前把self弄到namespace里呢?这样就不用把它放在方法的签名里了。