介绍在这里: http://blog.csdn.net/lanphaday/archive/2011/03/29/6287114.aspx
安装只需要easy_install pipe.
我写了一个小用法:
在ruby下面有这样的魔法: 1.hours.ago, 它估计是采用修改整型这个类的方式来做的, 这样太不pythonic.. (不知道我说错没有?)
利用pipe的话, 可以这样写:
1 | hour | ago
代码如下:
https://bitbucket.org/linjunhalida/code-example/src/tip/python/1hourago.py
个人觉得这个东西完全可以扩展到python核心模块中去了.
大家可以写点好玩的东西回复哈.
--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: 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核心模块, 结果发现它只是这样的:
提供pipe功能的东西都继承至Pipe类:
class Pipe:
def __init__(self, function):
self.function = function
def __ror__(self, other):
return self.function(other)
核心在于 __ror__, 这个函数其实就是 | 符号.
当python在解析 [1, 2, 3] | sort 的时候, 如果发现无法在左边的list里面找到or比较的函数的时候,
就会去调用右边的函数__ror__,
就会出现我们想要的结果: 把左边的值传给 sort.function 去执行.
核心代码少得可怜, 大家都可以去观摩下: https://github.com/JulienPalard/Pipe/blob/master/pipe.py
2011/3/30 机械唯物主义 : linjunhalida <linjun...@gmail.com>:
于 2011年03月30日 11:32, 机械唯物主义 : linjunhalida 写道:
> 官方网站: https://github.com/JulienPalard/Pipe
>
> 我本来以为它是修改了python核心模块, 结果发现它只是这样的:
> 提供pipe功能的东西都继承至Pipe类:
> class Pipe:
> def __init__(self, function):
> self.function = function
>
> def __ror__(self, other):
> return self.function(other)
>
> 核心在于 __ror__, 这个函数其实就是 | 符号.
> 当python在解析 [1, 2, 3] | sort 的时候, 如果发现无法在左边的list里面找到or比较的函数的时候,
> 就会去调用右边的函数__ror__,
> 就会出现我们想要的结果: 把左边的值传给 sort.function 去执行.
>
> 核心代码少得可怜, 大家都可以去观摩下: https://github.com/JulienPalard/Pipe/blob/master/pipe.py
>
>
> 2011/3/30 机械唯物主义 : linjunhalida <linjun...@gmail.com>:
>> 在python里面实现命令行的pipe功能, 比如: [1,3,2,0] | sort
>>
>> 介绍在这里: http://blog.csdn.net/lanphaday/archive/2011/03/29/6287114.aspx
>>
>> 安装只需要easy_install pipe.
>>
>> 我写了一个小用法:
>> 在ruby下面有这样的魔法: 1.hours.ago, 它估计是采用修改整型这个类的方式来做的, 这样太不pythonic.. (不知道我说错没有?)
>>
>> 利用pipe的话, 可以这样写:
>> 1 | hour | ago
>>
>> 代码如下:
>> https://bitbucket.org/linjunhalida/code-example/src/tip/python/1hourago.py
>>
>> 个人觉得这个东西完全可以扩展到python核心模块中去了.
>> 大家可以写点好玩的东西回复哈.
>>
--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: 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
2011/3/30 lu_zi_2000 <lu_zi...@163.com>:
> 有趣,学习
>
不过这样会有性能问题, 每个元素都要从左到右调用一遍函数, 在性能要求高的场合下可能不太适用? (不过其实可以规避的)
2011/3/30 lu_zi_2000 <lu_zi...@163.com>:
> 有趣,学习
>
有人知道stan吗?看看下面这段代码,论技巧性,比起pipe不会逊色吧,但是流行了吗?
import random
from nevow import renderer, tags
class Greeter(renderer.Renderer):
def greet(self, context, data):
return random.choice(["Hello", "Greetings", "Hi"]), " ", data
document = tags.html[
tags.head[ tags.title[ "Greetings!" ]],
tags.body[
tags.h1(style="font-size: large")[ "Now I will greet you:" ],
greet
]
]
在其他一些orm库中, 也采用了一种串联的方式, 比如
People.filter(age_lt=40).filter(home='China').sort(age).limit(12)
这样提升了很多的可读性. 我认为可读性是python中最重要的. 我想上面的代码是非常清晰的, 没有违反explicit is better
than implicit的概念.
你说到其他领域, 我也觉得不应该滥用的.. 以能被人看懂为准..
上面pipe的方式没有动到python核心, 只是提供了一个类, 而这个类是如此简单, 完全可以嵌入我们自己的项目里面.
至于你贴出来的代码, makeup language又是另外一回事了, 至少我觉得这样的代码可读性比较差. 用shpaml吧.
2011/3/30 shhgs <shhgs....@gmail.com>:
不错啊,很适合用来构建简洁易懂的SQL生成API,作为DSL的基础架构不错比如 类似:query=q(name="table1")|where(username="xxx")|orderby(id='desc')|select()生成 select * from table1 where username = 'xxx' order by id desc如何?
--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: 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
Pipe(range(12)).take_while(lambda x: x > 12).select(lambda x: x*x). sum()
还有这样呢?
Pipe(range(12), take_while(lambda x: x > 12), select(lambda x: x*x), sum)
2011/3/30 limodou <lim...@gmail.com>:
> 好象在上面的例子中,不如用'.'更好啊。
Pipe(range(12),
take_while(lambda x: x > 12),
select(lambda x: x*x),
sum)
看起来python真的能够让每个人按照自己的方式来写代码呀..
2011/3/30 lee Alexander <superp...@gmail.com>:
恩, 用.的写法:
Pipe(range(12)).take_while(lambda x: x > 12).select(lambda x: x*x). sum()
还有这样呢?
Pipe(range(12), take_while(lambda x: x > 12), select(lambda x: x*x), sum)
�һ���ͬ���ۣ�C++�������൱����ʱ�䣬ѡ��������������ʹ���߽���/ģ��Ͳ�˵�ˣ������������������ �أ����ÿ�ⶼ���Լ����Եķ�������
�����Ⲣû�е���C++���ã�ʵ���ϣ����Ѿ���C++����Ϊ���������յ����ԡ��ӵ�һ���ˡ���дC++��ʱ���Ҹ�����C������ļ��ɣ� ���ٷ�װ��������Զ���������ģ�壬���ø����ԡ�
�� 2011��3��30�� ����12:22��shhgs <shhgs....@gmail.com>д ����
�Ҳ���Ϊ���༼������Python������������explicit is better than implicit��| ���ǼӼ��ţ��ܶ��÷�ʵ�������������Ա�Լ������ġ�sh�ʸ��ϣ��������÷��Ѿ���ΪUnix���Ļ��ˣ������������������pipe����;�ͺܲ��� ȷ�ˡ��ȷ�˵��Hl7 message���棬��CSV file���棬��� | �Ϳ��Ե�����ͨ�ķָ�����һ��Ҫ��ijЩ�ض�������ǿ�ӵ�������ϣ����˲�һ�����š�
����֪��stan�𣿿���������δ��룬�ۼ����ԣ�����pipe����ѷɫ�ɣ�������������
import random
from nevow import renderer, tags
class Greeter(renderer.Renderer):
def greet(self, context, data):
return random.choice(["Hello", "Greetings", "Hi"]), " ", data
document = tags.html[
tags.head[ tags.title[ "Greetings!" ]],
tags.body[
tags.h1(style="font-size: large")[ "Now I will greet you:" ],
greet
]
]
On Wed, Mar 30, 2011 at 11:32:57AM +0800, ��еΨ������ : linjunhalida wrote:
> �ٷ���վ: https://github.com/JulienPalard/Pipe
>
> �ұ�����Ϊ��������python����ģ��, �������ֻ�������:
> �ṩpipe���ܵĶ������̳���Pipe��:
> class Pipe:
> def __init__(self, function):
> self.function = function
>
> def __ror__(self, other):
> return self.function(other)
>
> �������� __ror__, ���������ʵ���� | ���.
> ��python�ڽ��� [1, 2, 3] | sort ��ʱ��, �����������ߵ�list�����ҵ�or�Ƚϵĺ����ʱ��,
> �ͻ�ȥ�����ұߵĺ���__ror__,
> �ͻ����������Ҫ�Ľ��: ����ߵ�ֵ���� sort.function ȥִ��.
>
> ���Ĵ����ٵÿ���, ��Ҷ�����ȥ��Ħ��: https://github.com/JulienPalard/Pipe/blob/master/pipe.py
>
>
> 2011/3/30 ��еΨ������ : linjunhalida <linjun...@gmail.com>:
> > ��python����ʵ�������е�pipe����, ����: [1,3,2,0] | sort
> >
> > ����������: http://blog.csdn.net/lanphaday/archive/2011/03/29/6287114.aspx
> >
> > ��װֻ��Ҫeasy_install pipe.
> >
> > ��д��һ��С�÷�:
> > ��ruby�����������ħ��: 1.hours.ago, ������Dz��������������ķ�ʽ������, ����̫��pythonic.. (��֪����˵��û��?)
> >
> > ����pipe�Ļ�, ��������д:
> > 1 | hour | ago
> >
> > ��������:
> > https://bitbucket.org/linjunhalida/code-example/src/tip/python/1hourago.py
> >
> > ���˾������������ȫ������չ��python����ģ����ȥ��.
> > ��ҿ���д�����Ķ����ظ���.
> >
>
> --
> ����: python-cn`CPyUG`�����û���(����Python�����ʼ��б�)
> ����: 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�����ʼ��б�)
����: 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
--
����: python-cn`CPyUG`�����û���(����Python�����ʼ��б�)
����: 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
2011/3/30 机械唯物主义 : linjunhalida <linjun...@gmail.com>恩, 用.的写法:
Pipe(range(12)).take_while(lambda x: x > 12).select(lambda x: x*x). sum()
还有这样呢?
Pipe(range(12), take_while(lambda x: x > 12), select(lambda x: x*x), sum)
上面的写法不对。需要对Pipe改造一下才可以。
2011/3/30 limodou <lim...@gmail.com>:
因为 Py 都是对象,所以,允许对所有语法代号进行定制;
不过,得端正目标哪:
- 令代码简短易懂
否则,就算是将 Py 伪装成 haskell/Erlang/go ... 也无法帮助大家写好程序的哪
管道式程序,俺个人感觉:
+ 有利于帮助我们抽象出纯函式
+ 并用整齐的表述形式来将一个复杂的处理过程的上下文都展示出来
适用在一般的数据处理过程中,
但是在复杂的多分支处理中,就难以使用了,就象真正的 shell 脚本,只有 zsh 支持有限的多方向管道;
这种对于 Py 语法的改进,已经是种 DSL 了,
就象 zhpy ,也不过是在核心之外,包装了一层,成为中文编程环境...
一定要在合适的场景中使用,否则,容易入魔哪...
--
人生苦短, Pythonic! 冗余不做,日子甭过!备份不做,十恶不赦!
俺: http://about.me/zoom.quiet
哲: http://www.zeuux.org/home/zoomquiet
豆: http://www.douban.com/group/zoomquiet
书: http://code.google.com/p/openbookproject
营: http://code.google.com/p/kcpycamp/wiki/PythoniCamp
编程不是靠个人英雄主义的。自由度过高的语言只适合单打独斗。自由度过高对语言来说是坏事而不是好事。one way to do one thing 才是更好的语言。
在绝大多数使用 C++的开发团队中,都要对C++的特性进行大量的限定与限制才能够正常使用。这导致不同的人,不同的团队,在不同的平台下写出的C++语言发生天壤之别。C++过多的特性正是其发展的绊脚石。
> 问题不会随着你用什么语言而变得简单或者复杂
这个真不一定。确实会有一些问题用某种语言解决起来更简单,或者更复杂。
在 2011年3月30日 下午1:38,limodou <lim...@gmail.com> 写道:
...
>> 上面的写法不对。需要对Pipe改造一下才可以。因为 Py 都是对象,所以,允许对所有语法代号进行定制;
>
> 介绍的例子也是有问题的。内置的sum是不支持|操作的,因此:
> print range(12)|sum #错
> print range(12)|sum() #错
> print range(12)|add #对
> 因此使用Pipe也是有一定的要求,需要后面的函数是经过@Pipe处理过的,否则有问题。
不过,得端正目标哪:
- 令代码简短易懂
否则,就算是将 Py 伪装成 haskell/Erlang/go ... 也无法帮助大家写好程序的哪
管道式程序,俺个人感觉:
+ 有利于帮助我们抽象出纯函式
+ 并用整齐的表述形式来将一个复杂的处理过程的上下文都展示出来
适用在一般的数据处理过程中,
但是在复杂的多分支处理中,就难以使用了,就象真正的 shell 脚本,只有 zsh 支持有限的多方向管道;
这种对于 Py 语法的改进,已经是种 DSL 了,
就象 zhpy ,也不过是在核心之外,包装了一层,成为中文编程环境...
一定要在合适的场景中使用,否则,容易入魔哪...
--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: 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技术邮件列表)
发言: 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
����˵�����ɵ����dz�������
�� 2011��03��30�� 13:48, pansz �:
> 2011/3/30 lu_zi_2000 <lu_zi...@163.com>:
>> ������ͬ�Ǻǣ�ʵ��������ΪC����������õ�����֮һ���ؼ�����������ܸߵ����ɶȣ���C�����������C�ķ��ʵ�����Ǻܶ�C������NIU��֧ �ֵ�
> ��̲��ǿ�����Ӣ������ġ����ɶȹ�ߵ�����ֻ�ʺϵ�����������ɶȹ�߶�������˵�ǻ��¶��Ǻ��¡�one way to do one thing ���Ǹ�õ����ԡ�
>
> �ھ�����ʹ�� C++�Ŀ����Ŷ��У���Ҫ��C++�����Խ��д������������Ʋ��ܹ���ʹ�á���²�ͬ���ˣ���ͬ���Ŷӣ��ڲ�ͬ��ƽ̨��д����C++���Է�������֮��C++�������������䷢չ�İ��ʯ��
>
>> ���ⲻ����������ʲô���Զ��ü��߸���
> ����治һ����ȷʵ����һЩ������ij�����Խ������������߸��ӡ�
>
ij����������ʹ��ij�����Խ��������Ӽ����߸�Ӹ��ӵ�ԭ���������ڿ���档perlǿ��Ŀ�֧��ע������ ǿ���string�������������python�����ǿ�Ŀ�֧����Σ��������ע��������ˡ�python������û��Ϊ�ַ������ �������Ҳ����ǿ��string���?Ҳע����������ôǿ�Ŀ⡣ͬ��php�ij�������html�����ճ�ϣ�Ҳ��������������ǿ���һ�£��� ��lisp��python�����Ŀ�֧�֣������÷���ȫһ�£�����ô��lisp���ֹŹֵ�������̫������ô����Ų���ɡ�
C++���������˫�н�������ѧϰC++��ͷ5����һֱ�����͡��������ź��ڣ���������Խ��Խ�࣬�����Ա��ά��Ҳ�������ࡣC++������ ���һ������������⡣˭�ܸ����ң��ڿ���count_if(li.begin(), li.end(), sout << "blahblah" | i->(*fptr_array[SYSTEM_INFO])(func_num) >> cin); ��ʱ�������д������ij���Աץ����һ���⣬������ʲô����뷨���Ǹ������ļһ���C++������һ���µ����ԣ�����Ҫ���ĵ���ȫ�������ѧϰ������� ������ô˵����ƽ����Ϊ��Ҳ���˺ܶ����Ƶ����顣
�� 2011��3��30�� ����1:48��pansz <pan.s...@gmail.com>д ����
2011/3/30 lu_zi_2000 <lu_zi...@163.com>:
> ������ͬ�Ǻǣ�ʵ��������ΪC����������õ�����֮һ���ؼ�����������ܸߵ����ɶȣ���C�����������C�ķ��ʵ�����Ǻܶ�C������NIU��֧ �ֵ�
��̲��ǿ�����Ӣ������ġ����ɶȹ�ߵ�����ֻ�ʺϵ�����������ɶȹ�߶�������˵�ǻ��¶��Ǻ��¡�one way to do one thing ���Ǹ�õ����ԡ�
�ھ�����ʹ�� C++�Ŀ����Ŷ��У���Ҫ��C++�����Խ��д������������Ʋ��ܹ���ʹ�á���²�ͬ���ˣ���ͬ���Ŷӣ��ڲ�ͬ��ƽ̨��д����C++���Է�������֮ ��C++�������������䷢չ�İ��ʯ��
> ���ⲻ����������ʲô���Զ��ü��߸���
����治һ����ȷʵ����һЩ������ij�����Խ������������߸��ӡ�
--
����: python-cn`CPyUG`�����û���(����Python�����ʼ��б�)
����: 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
2011/3/30 lu_zi_2000 <lu_zi...@163.com>:
> 我们处在一个多元化的世界中,我们要会说hello,但也不能因为别人说nice to meet you就说人家不对,是吧,唯一不变的是变化本身
>
语言核心简洁我觉得非常重要, 语言本身是非常重要的接口, 设定了之后若干年都不好改的... 魔法可以放在库里面, 但是最好也不能复杂到侵蚀语言本身的程度...
2011/3/30 limodou <lim...@gmail.com>:
> 其实指令集不也是如此,CISC和RISC各有优点和缺点。
我们处在一个多元化的世界中,我们要会说hello,但也不能因为别人说nice to meet you就说人家不对,是吧,唯一不变的是变化本身
于 2011年03月30日 14:02, Shell Xu 写道:某种问题随着使用某种语言解决起来更加简单,或者更加复杂的原因大多数发生在库层面。perl强大的库支持注定了他 强大的string处理能力。如果python有如此强的库支持如何?这个问题注定无法解答了。python的语法就没有为字符串处理而优 化,因此也不会强调string处理,也注定不会有那么强的库。同样,php的长处在于html处理和粘合,也是类似情况。我们考虑一下,如 果lisp有python这样多的库支持(而且用法完全一致),那么用lisp那种古怪的语法会有太大问题么?大概不会吧。
C++的灵活性是双刃剑,我在学习C++的头5年内一直很欣赏。但是随着后期,遗留代码越来越多,跨程序员的维护也渐渐增多。C++的语法就 变成一个很讨厌的问题。谁能告诉我,在看到count_if(li.begin(), li.end(), sout << "blahblah" | i->(*fptr_array[SYSTEM_INFO])(func_num) >> cin); 的时候,除了想把写这玩意的程序员抓来打一顿外,还该有什么别的想法。那个该死的家伙用C++创造了一门新的语言,而我要在文档不全的情况下学习这玩意的 语法。这么说好像不大公平,因为我也干了很多类似的事情。
在 2011年3月30日 下午1:48,pansz <pan.s...@gmail.com>写 道:
2011/3/30 lu_zi_2000 <lu_zi...@163.com>:
> 不能认同呵呵,实际是我认为C++是最好用的语言之一,关键就在于它给你很高的自由度,在C++里采用类C的风格实际上是很多C++大NIU们支 持的编程不是靠个人英雄主义的。自由度过高的语言只适合单打独斗。自由度过高对语言来说是坏事而不是好事。one way to do one thing 才是更好的语言。
在绝大多数使用 C++的开发团队中,都要对C++的特性进行大量的限定与限制才能够正常使用。这导致不同的人,不同的团队,在不同的平台下写出的C++语言发生天壤之 别。C++过多的特性正是其发展的绊脚石。
> 问题不会随着你用什么语言而变得简单或者复杂
这个真不一定。确实会有一些问题用某种语言解决起来更简单,或者更复杂。
--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: 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技术邮件列表)
发言: 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技术邮件列表)
发言: 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
�Ǻǣ���Ҳ��ʹ��C++һ��ʱ��֮��ص���C��
ò�ƶ�C++������˶�����C++ʱ�䲻����ˡ�
C���Ѿ��㹻�����ˡ�
C++������ֻ���鷳��ƣ�͡�
--
����ľګ�������ĵ�
优秀的文章是让人读的,优秀的代码却是让人改的。
所以一篇文章用八种语言风格无所谓,因为用户只需要去读。代码不合适,因为用户往往需要去改。
c++需要你更长时间的软磨硬泡,会比纯C有更高的开发效率
其实萝卜咸菜和有所好了,用久了汇编也很好用
--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: 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技术邮件列表)
发言: 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
Ĥ��...17��.
2011/3/30 Shell Xu <shell...@gmail.com>
��簢��������17��C��12��C++���˵�һ���ӻ��и���ʱ������ô������
������������ȥʱ����������ҵĹ���������ȫ���ɱ���
�� 2011��3��30�� ����2:53��lu_zi_2000 <lu_zi...@163.com>д ����
--
������������ʳ�����Σ�������ϵ֮��
����: python-cn`CPyUG`�����û���(����Python�����ʼ��б�)
����: 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技术邮件列表)
发言: 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
这是一种矛盾。例如很多人觉得新特性的增加应当尽量利用现有语法并以库的形式实现,STL
算法就是这个想法的牺牲品。它不改变语法,仅仅利用现有的运算符重载框架来实现函数对象,导致了极度复杂和费解的代码。
其实只要增加 lambda 函数或者说把函数做成first-class变量,就能够使 STL
算法的代码优雅许多倍。但是这不可避免的要修改与增加语法。显然,他们已经认识到这个巨大的错误,在 C++11 里面已经明确了 lambda
函数的语法。
模板这东西,为什么很多人玩不来?其实与当初他们对语法修订的保守有很大的关系。如果当初就吧 auto 关键字,lambda
函数等等很多语法特性加进去,那么模板代码相对会整洁很多,也有更多人能够玩得来。
从我个人的角度,我认为C++标准中每一次对传统习惯的执着都恶化了C++语法。例如最初是执着对C的兼容导致了在C++里面有完全不相容的多种代码风格,后来对模板,STL
容器和算法的引入也是由于过于专注兼容现有C++语法导致STL算法实际上在实战中基本没人敢用。例子:随便一个 foreach 在标准 C++
中需要写多少代码都让人咋舌,微软VC的私自改进版 foreach 倒是有很多人乐于使用。
不改变语法就无法优雅的实现 lambda 函数,也无法优雅的实现 foreach,这是 C++ 语法的基础设计问题还是什么呢?
--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: 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
�����������������Ϊ����ʲô�������ʲô
�ͺ������ĺܶ�����ѧ������������й���Ҳ����˵��ͷͷ�µ�һ��
�� 2011��03��30�� 16:09, pansz �:
> 2011/3/30 ubunoon <net...@gmail.com>:
>> ��ʵ�ڲ���ͬ��ֵ�ʹ��stl��stl�е�����ʹ�û��ǿ��Եģ���ص��㷨ʵ�֣�ʵ�ڲ���ȥʹ�ã�Ϊ��һ���㷨�����ǵù���̫��Ķ���ȥ�����ʵ�֣�����ֱ�����ࡣ�ܾ���C++��ģ�岻��һ������ܹ�������ģ������˶��治��������Ѿ����ǹ���������Ҫ�Ķ����ˡ�
> ����һ��ì�ܡ�����ܶ��˾��������Ե�����Ӧ�������������������Կ����ʽʵ�֣�STL
> �㷨��������뷨������Ʒ����ı����������������е���������ؿ����ʵ�ֺ���������˼��ȸ��Ӻͷѽ�Ĵ��롣
>
> ��ʵֻҪ���� lambda �������˵�Ѻ�������first-class���������ܹ�ʹ STL
> �㷨�Ĵ����������������ⲻ�ɱ����Ҫ��������������Ȼ�������Ѿ���ʶ�������Ĵ����� C++11 �����Ѿ���ȷ�� lambda
> ���������
>
> ģ���ⶫ����Ϊʲô�ܶ����治������ʵ�뵱�����Ƕ������ı����кܴ�Ĺ�ϵ�������Ͱ� auto �ؼ��֣�lambda
> ����ȵȺܶ������Լӽ�ȥ����ôģ�������Ի����ܶ࣬Ҳ�и�����ܹ��������
>
> ���Ҹ��˵ĽǶȣ�����ΪC++����ÿһ�ζԴ�ͳϰ�ߵ�ִ�Ŷ�����C++�������������ִ�Ŷ�C�ļ��ݵ�������C++��������ȫ�����ݵĶ��ִ���������ģ�壬STL
> �������㷨������Ҳ�����ڹ���רע��������C++������STL�㷨ʵ������ʵս�л�û�˸��á����ӣ����һ�� foreach �ڱ� C++
> ����Ҫд���ٴ��붼����զ�࣬��VC��˽�ԸĽ�� foreach �����кܶ�������ʹ�á�
>
> ���ı����������ŵ�ʵ�� lambda ����Ҳ�����ŵ�ʵ�� foreach������ C++ ���Ļ���������ʲô�أ�
>
末了,就是这样一个人,放在一百个人身上,九十五个绝对是庸才,不过他是另外的五个之一。
因为全公司他最忙,不一定是忙自己的事情,是忙别人的事情。每隔10分钟会被不同的人叫过去帮忙。帮什么忙呢?有人会问他一个商品的推荐算法的思路杂么做,还有人会问他搜索引擎的后台构架是杂么样的,另外还有人会请他分析一个诡异现象的root
cause. 高中的时候拿过上海市数学竞赛的一等奖,交大的自动化硕士。搞过机器人识别图像分析,推荐引擎,深谙算法,数理逻辑,现在还时常翻翻大学里的数理教材,说不搞搞脑子,人容易变傻。
后来我大概感受到,学院派的人其实没有放很多心思在流于表面的东西上,因为这样往往占用的是他们触及问题本质的时间,得不偿失。
一个 1 hour ago 的小魔法也好,
一个可以分清楚注释,实际代码,能不能去掉空格的图形化代码统计工具也罢。除了能让你莫名的暗爽,到底带来了什么实际价值?
无非你比别人更快的算出了一个时间,看到某些人量产了多少代码,用一种很毛糙的手段从令人不齿的商业视角计算了一下每个码农非常不准确的性价比。
我们为什么不要崇尚个人英雄主义?因为英雄能做的你肯定做不了,你做的比他快的事情,别人更不不削去做。找个比你做的还快的告诉他做什么就行了。
算法导论是用伪代码写的,表达思想的形式远没有思想本身更重要,只有艺术家才会讨论隶书和狂草的区别,你们想搞得高级一点的人就不要纠结这点东西了。
在 2011年3月30日 下午4:18,lu_zi_2000 <lu_zi...@163.com> 写道:
> 谁说STL算法没人用。。。
> 目前具我所知,无论从算法方面还是语言层面,STL的sort算法的执行效率都是最高的
>
> 语言这个东西,你认为他是什么,他就是什么
> 就好象中文很多老外学不来,但最笨的中国人也可以说的头头事道一样
2011/3/30 Zhang Jiawei <gho...@gmail.com>:
我基本认同结论,C++社区有相当长的时间,选择允许语言随着使用者进化。宏/模板就不说了,后来又增加了算符重载,最后几乎每套库都有自己独自的风格和语法。
不过这并没有导致C++好用,实际上,我已经把C++评价为“最难掌握的语言”扔到一边了。在写C++的时候,我更多采用C里面简洁的技巧,减少封装,减少面对对象,尽量少用模板,少用高级特性。在 2011年3月30日 下午12:22,shhgs <shhgs....@gmail.com>写道:
我不认为这类技术会在Python社区大行其道。explicit is better than implicit。| 不是加减号,很多用法实际上是由设计人员自己决定的。sh资格够老,因此它的用法已经成为Unix的文化了,但是在其他领域,这个pipe的用途就很不明确了。比方说在Hl7 message里面,在CSV file里面,这个 | 就可以当作普通的分隔符。你一定要把某些特定的语义强加到这个语法上,别人不一定买张。
有人知道stan吗?看看下面这段代码,论技巧性,比起pipe不会逊色吧,但是流行了吗?
import random
from nevow import renderer, tags
class Greeter(renderer.Renderer):
def greet(self, context, data):
return random.choice(["Hello", "Greetings", "Hi"]), " ", data
document = tags.html[
tags.head[ tags.title[ "Greetings!" ]],
tags.body[
tags.h1(style="font-size: large")[ "Now I will greet you:" ],
greet
]
]
On Wed, Mar 30, 2011 at 11:32:57AM +0800, 机械唯物主义 : linjunhalida wrote:
> 官方网站: https://github.com/JulienPalard/Pipe
>
> 我本来以为它是修改了python核心模块, 结果发现它只是这样的:
> 提供pipe功能的东西都继承至Pipe类:
> class Pipe:
> def __init__(self, function):
> self.function = function
>
> def __ror__(self, other):
> return self.function(other)
>
> 核心在于 __ror__, 这个函数其实就是 | 符号.
> 当python在解析 [1, 2, 3] | sort 的时候, 如果发现无法在左边的list里面找到or比较的函数的时候,
> 就会去调用右边的函数__ror__,
> 就会出现我们想要的结果: 把左边的值传给 sort.function 去执行.
>
> 核心代码少得可怜, 大家都可以去观摩下: https://github.com/JulienPalard/Pipe/blob/master/pipe.py
>
>
> 2011/3/30 机械唯物主义 : linjunhalida <linjun...@gmail.com>:
> > 在python里面实现命令行的pipe功能, 比如: [1,3,2,0] | sort
> >
> > 介绍在这里: http://blog.csdn.net/lanphaday/archive/2011/03/29/6287114.aspx
> >
> > 安装只需要easy_install pipe.
> >
> > 我写了一个小用法:
> > 在ruby下面有这样的魔法: 1.hours.ago, 它估计是采用修改整型这个类的方式来做的, 这样太不pythonic.. (不知道我说错没有?)
> >
> > 利用pipe的话, 可以这样写:
> > 1 | hour | ago
> >
> > 代码如下:
> > https://bitbucket.org/linjunhalida/code-example/src/tip/python/1hourago.py
> >
> > 个人觉得这个东西完全可以扩展到python核心模块中去了.
> > 大家可以写点好玩的东西回复哈.
> >
>
> --
> 来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
> 发言: 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技术邮件列表)
发言: 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
--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: 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
这个还是约定俗成的东西。就像sh里面的 |,如果大家都接受了,那么就是它了。
不过我还是非常不看好他的前景。
On Wed, Mar 30, 2011 at 01:14:52PM +0800, lee Alexander wrote:
> 有点纠结了,
>
> 类似
> fib() | take_while(lambda x: x < 1000000)
> | where(lambda x: x % 2)
> | select(lambda x: x * x)
> | sum()
>
> 这样的写法看起来确实很好懂
>
>
> 在 2011年3月30日 下午1:12,limodou <lim...@gmail.com>写道:
>
> >
> >
> > 2011/3/30 lee Alexander <superp...@gmail.com>
> >
> >> 不错啊,很适合用来构建简洁易懂的SQL生成API,作为DSL的基础架构不错
> >>
> >> 比如 类似:
> >>
> >> query=q(name="table1")|where(username="xxx")
> >> |orderby(id='desc')
> >> |select()
> >> 生成 select * from table1 where username = 'xxx' order by id desc
> >>
> >> 如何?
> >>
> >>
> >>
> > 好象在上面的例子中,不如用'.'更好啊。
> >
> > --
> > I like python!
> > UliPad <<The Python Editor>>: http://code.google.com/p/ulipad/
> > UliWeb <<simple web framework>>: http://uliwebproject.appspot.com
> > My Blog: http://hi.baidu.com/limodou
> >
> > --
> > 来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
> > 发言: 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
> >
>
>
>
> --
> Alexander.Li
> +86 15308006505
> mail: superp...@gmail.com/superp...@hotmail.com
> site:http://alexander-lee.cnblogs.com
>
�� Wed, 30 Mar 2011 11:19:19 +0800����еΨ������ : linjunhalida
<linjun...@gmail.com> �:
> ��python����ʵ�������е�pipe����, ����: [1,3,2,0] | sort
>
> ����������:
> http://blog.csdn.net/lanphaday/archive/2011/03/29/6287114.aspx
>
> ��װֻ��Ҫeasy_install pipe.
>
> ��д��һ��С�÷�:
> ��ruby�����������ħ��: 1.hours.ago,
> ������Dz��������������ķ�ʽ������, ����̫��pythonic..
> (��֪����˵��û��?)
>
> ����pipe�Ļ�, ��������д:
> 1 | hour | ago
>
> ��������:
> https://bitbucket.org/linjunhalida/code-example/src/tip/python/1hourago.py
>
> ���˾������������ȫ������չ��python����ģ����ȥ��.
> ��ҿ���д�����Ķ����ظ���.
>
执行效率高低与有没有人敢用是两回事,汇编的执行效率更高,但是相信没人敢用汇编去写星际争霸。
几乎没人敢用,隐含的前提就是有很多人用了,然后发现用这玩意的后果,然后发现能远离就尽量远离的害怕。不真正用过,是不会知道敢不敢用的。12y+的C++经验,楼上
Shell Xu 算是一个同行,我也是 12y+,我可以用 STL
算法,甚至把程序的主题都集中在算法表述,问题在于这玩意弄出去之后,有几个人敢维护?这种玩意给周围20+个程序员看了都没人敢维护。
这里的重点是:要深入使用STL算法肯定要自定义函数对象,而创建自定义函数对象相关的精巧代码太超乎常规的编程思维了。
这是文化,其实很多人会受到周围文化的影响。互联网初期那些顶级黑客文化也是一样的,他们的习惯会互相影响。就好比用 emacs 的黑客周围可能有很多同好一样。
2001年我开始使用 vi,是因为那时从研发总经理到项目经理到部门主任到所有的同事全部都是 vi 派。不会用 vi
,天天把文件从服务器上拖回来到本地用记事本编辑的人,是绝对的少数以及绝对的被歧视派,你那个同事在这种氛围下可能连生存的空间都没有,他一定会被边缘化。
文化的差异其实类似于语言的隔阂,就如说,不论你有多么牛的技术,你不懂英文也不可能在美国教书。如果周围所有的人都知道 wc -l
是什么,你不知道的后果就是:你在他们眼里根本不存在。
������������������������ס�
��װ��Ŀ���������ã��뿪���ã���װû�����塣
û������һ��ȥ��stl��foreach��������⣬����ʱ��for����iterator������
�ij�����ȥ�������������õ�Ŀ�ģ����� ���д���ٵĴ��롣
���У�Ҳ��һ����Ҫ��foreach����Ҳ����ʹ��boost���boost_foreach��ʡ��
iterator�ij��Ȼ��ȡ��������� Ȥ���������յ�֪ʶ��
�������ȫ����д�Լ���ϲ���Ĵ������ﵽ��õ�Ч��
�����ڻ��ֵ�����д����ֻ����˵���������ʱ����һ����Ԫ���ŵ�ʱ����Ҫ
�����ö�Ƕȵ�Ŀ��ȥ��������硣һ�㲻��Ķ�������ֻ������������ �κμ�
���Ķ������ǽ����ڲ���֮�ϵ�,ֻ���㻹û�з�����
�� 2011��03��31�� 09:18, pansz �:
> 2011/3/30 Zhang Jiawei <gho...@gmail.com>:
>> �ҷ�������һ��ͬ�£����кܶ����ҿ������ӵ��ַ��� IT������������һ���ʳյ� Eclipse, �������������� Windows,
> �����Ļ�����ʵ�ܶ��˻��ܵ���Χ�Ļ���Ӱ�졣�����������Щ�����ڿ��Ļ�Ҳ��һ��ģ����ǵ�ϰ�ụ��Ӱ�졣�ͺñ��� emacs �ĺڿ���Χ�����кܶ�ͬ��һ��
>
> 2001���ҿ�ʼʹ�� vi������Ϊ��ʱ���з��ܾ��?��Ŀ���?�������ε����е�ͬ��ȫ������ vi �ɡ������� vi
> ��������ļ��ӷ��������ϻ����������ü��±��༭���ˣ��Ǿ�Ե������Լ���Եı������ɣ����Ǹ�ͬ�������ַ�Χ�¿��������Ŀռ䶼û�У���һ���ᱻ��Ե����
>
> �Ļ��IJ�����ʵ���������Եĸ��ң�����˵���������ж�ôţ�ļ������㲻��Ӣ��Ҳ��������������顣�����Χ���е��˶�֪�� wc -l
> ��ʲô���㲻֪���ĺ����ǣ�����������������ڡ�
>
这个现象就有趣了,如果我来揣测一下我那个同事在你们公司的地位。大概是从小兵到主任,每个人都在很忙碌的看日志,简单的问题你们都可以解决,复杂的问题,日志的结果被汇总到我那个同事那边,做决策,然后人家给出下一个指令,大家再忙碌半天。
我承认会用 vi 的绝对是把好枪。
难的是,自己是把好枪,还能自己扣动扳机。
��������ά�ȵ������ˡ�
�� 2011��03��31�� 09:49, lu_zi_2000 �:
当然,在研究环境和开发环境,我们可以采取完全不同的作法
在研究环境里,我们努力的找到解决问题的最好方法,并把它推广
在开发环境里,我们制定统一的开发方案和习惯,比如我们统一使用django而放弃
web.py,减少复杂语法的使用使程序更容易维护,让所有人 用相同的编码规范来进
行开发等
这是两个维度的问题了。
于 2011年03月31日 09:49, lu_zi_2000 写道:
> 打算写一系列关于C++的教程了,你说的对,无论什么理由,我们都必须适应这
> 个社会,或者去改变他
>
> 尽管在你的世界里,你是它的主宰。
>
> 封装的目的在于重用,离开重用,封装没有意义。
>
> 没人让你一定去用stl的foreach来解决问题,多数时候,for加上iterator会让你
> 的程序看上去更简单,但如果有重用的目的,可能 你会写更少的代码。
>
> 还有,也不一定非要用foreach,你也可以使用boost里的boost_foreach来省略
> iterator的丑恶,当然这取决于你的兴 趣和你所掌握的知识。
>
> 最后,你完全可以写自己更喜欢的代码来达到更好的效果。
>
> 无意于回字的四种写法,只是想说,我们所处的时代是一个多元开放的时代,需要
> 我们用多角度的目光去看这个世界。一层不变的东西最终只会走向死亡, 任何简
> 单的东西都是建立在不简单之上的,只是你还没有发现它。
--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: 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
--
web site:http://laiyonghao.com
twitter: http://twitter.com/laiyonghao
2011/3/31 赖勇浩 <ma...@laiyonghao.com>:
oneliner写起来爽,debug就头大了,谁知道在哪一步出的错啊。
只能一行一行拆开,把中间结果打出来。
--
Best Regards,
Leo Jay
On Mar 30, 11:19 am, 机械唯物主义 : linjunhalida <linjunhal...@gmail.com>
wrote:
> 在python里面实现命令行的pipe功能, 比如: [1,3,2,0] | sort
>
> 介绍在这里:http://blog.csdn.net/lanphaday/archive/2011/03/29/6287114.aspx
>
> 安装只需要easy_install pipe.
>
> 我写了一个小用法:
> 在ruby下面有这样的魔法: 1.hours.ago, 它估计是采用修改整型这个类的方式来做的, 这样太不pythonic.. (不知道我说错没有?)
>
> 利用pipe的话, 可以这样写:
> 1 | hour | ago
>
> 代码如下:https://bitbucket.org/linjunhalida/code-example/src/tip/python/1houra...
>
> 个人觉得这个东西完全可以扩展到python核心模块中去了.
> 大家可以写点好玩的东西回复哈.
- 但是,这里不多
- 俺痛恨 使用 end 作为语法边界的所有语言
- 当然,沈游侠也说了,正是因为有人对 Py 使用缩进作语法边界很不爽,所以有了 Ruby
--
人生苦短, Pythonic! 冗余不做,日子甭过!备份不做,十恶不赦!
俺: http://about.me/zoom.quiet
哲: http://www.zeuux.org/home/zoomquiet
豆: http://www.douban.com/group/zoomquiet
书: http://code.google.com/p/openbookproject
营: http://code.google.com/p/kcpycamp/wiki/PythoniCamp
--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: 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
2011/3/31 Zandy <zan...@gmail.com>:
从科学的角度来讲,语言应当从最高标准评价,也就是说,这个语言能够写出的最优秀代码能达到什么程度。
从工程的角度来讲,语言只能从最低标准评价,也就是说,这个语言能够写出的最难懂的代码能到什么程度,因为在实践中你很难阻止一个工程师在语言允许的范围内写出令人费解与误解的代码。任何一个不能被程序自动检查的代码规范都会导致要么被人忽略和忘却被淡出,要么耗费大量的人力去检查实施而无法坚持。
努力说明一个语言的代码能够多么优秀,这只具有科研上的意义;但是一个语言在避免糟糕代码,以及避免糟糕代码带来的后果方面特别突出的话,他就可能在实际软件开发中广泛运用。
回到切题的问题:Python 的 Pipe 属于什么样的行为?在我看来,目前为止非常好,因为他描述的方式足够优雅。而且不容易导致令人费解的代码。
--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: 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
非常同意。不过要是让我钻牛角尖的话,工程上也不能只考虑“最低”吧,考虑”正常情况下“能写出来的最难懂代码就好。比如,ioccc那种级别的难懂代码,实践中还是可以阻止的
:)
def __ror__(self, other):
return self.function(other)
def __call__(self, *args, **kwargs):
return Pipe(lambda x: self.function(x, *args, **kwargs))
这样的代码还需要做什么封装...
我考虑了一下上面的实现, 其实就是把函数套函数的方式利用 pipe的方式写得更清晰了.
因为利用生成器, 并不会增加函数调用, 不过中间会用到很多函数调用, 性能会差很多...
2011/4/1 Shell Xu <shell...@gmail.com>:
--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: 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技术邮件列表)
发言: 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
> 2011/4/1 机械唯物主义 : linjunhalida <linjun...@gmail.com>
>>
>> class Pipe:
>> def __init__(self, function):
>> self.function = function
>>
>> def __ror__(self, other):
>> return self.function(other)
>>
>> def __call__(self, *args, **kwargs):
>> return Pipe(lambda x: self.function(x, *args, **kwargs))
>>
>> 这样的代码还需要做什么封装...
>>
>> 我考虑了一下上面的实现, 其实就是把函数套函数的方式利用 pipe的方式写得更清晰了.
>> 因为利用生成器, 并不会增加函数调用, 不过中间会用到很多函数调用, 性能会差很多...
- 不一定,加入惰性运算神马的,效率是可以继续提高的
在 2011年4月1日 上午10:38,Linker <linker...@gmail.com> 写道:
> Python哲学是 显式 比 隐式 好。- 显 的是什么?!
> 这个Pipe不知道算不算符合?
>
- Pipe 着力显示的是数据的处理过程,和我们对问题的解决思路
- 从排版上,精简了原先不必要的缩进,更加美观
嗯嗯嗯!引用一下 沈游侠的军规之一:
- 代码必须写得使 code review 非常快捷,任何人不用看内容,扫一眼排版就知道是否有问题!
看好呵,让代码清晰就是王道
在 2011-4-1 上午11:02,"limodou" <lim...@gmail.com>写道:
> 2011/4/1 Zoom.Quiet <zoom....@gmail.com>
>
>> 在 2011年4月1日 上午10:38,Linker <linker...@gmail.com> 写道:
>> > Python哲学是 显式 比 隐式 好。
>> > 这个Pipe不知道算不算符合?
>> >
>> - 显 的是什么?!
>> - Pipe 着力显示的是数据的处理过程,和我们对问题的解决思路
>> - 从排版上,精简了原先不必要的缩进,更加美观
>> 嗯嗯嗯!引用一下 沈游侠的军规之一:
>> - 代码必须写得使 code review 非常快捷,任何人不用看内容,扫一眼排版就知道是否有问题!
>>
>>
>>
> 我觉得存在的问题就是:
>
> 1. 它目前不是python的标准语法,因为不是标准语法所以会有一种hack的味道。当然,如果哪天变成标准语法了,我想争论会少很多。
> 2. |的用法和(或)的操作符在某种程度上有语义限制。这个完全要看后面的函数
> 3. 因为它对函数的定义有特殊要求,并不是随便拿过来就能用的
>
> 反正现在是以库的形式存在,自已能控制就行了。想用就用,不想用就不用。就和c++的操作符重载一样。只不过自已用可能没什么问题,但是让别人用,就要把相关的信息说得清楚让别人易于理解,这样会更好一些。省得让别人搞不清楚。
不行太和谐了,谁有下载下来的?!
- 或是 幻灯也成?