Python论坛  - 讨论区

标题:[python-chinese] Python闭包的效率

2007年04月18日 星期三 14:30

R.Potato rough.vanzolo在gmail.com
星期三 四月 18 14:30:26 HKT 2007

Python 的闭包确实是非常有用的特性,但是就是不知道在效率上和自定义类的实例哪个更好一点。

在javascript里面也有闭包,但是一些文章说不要太多的使用,因为目前浏览器在这方面的实现还不太好,容易耗费大量内存。所以我想了解一下python里面闭包的性能。最好能有一些数据比较。

谢谢

-- 
BRs,
Li Hongliang

挟一卷书
观天测地
仗一口剑
保家卫国

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年04月18日 星期三 15:20

ro rosettas在gmail.com
星期三 四月 18 15:20:06 HKT 2007

On 4/18/07, R. Potato <rough.vanzolo在gmail.com> wrote:
> Python 的闭包确实是非常有用的特性,但是就是不知道在效率上和自定义类的实例哪个更好一点。
>
> 在javascript里面也有闭包,但是一些文章说不要太多的使用,因为目前浏览器在这方面的实现还不太好,容易耗费大量内存。所以我想了解一下python里面闭包的性能。最好能有一些数据比较。

啥叫闭包,google了一下没太看懂,回调函数吗?

-- 
with kind regards

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年04月18日 星期三 15:31

杨易飞 tito001945在gmail.com
星期三 四月 18 15:31:42 HKT 2007










函数外部调用变量就是闭包吧。。。。。。


在 07-4-18,ro<rosettas在gmail.com> 写道:
> On 4/18/07, R. Potato <rough.vanzolo在gmail.com> wrote:
> > Python 的闭包确实是非常有用的特性,但是就是不知道在效率上和自定义类的实例哪个更好一点。
> >
> > 在javascript里面也有闭包,但是一些文章说不要太多的使用,因为目前浏览器在这方面的实现还不太好,容易耗费大量内存。所以我想了解一下python里面闭包的性能。最好能有一些数据比较。
>
> 啥叫闭包,google了一下没太看懂,回调函数吗?
>
> --
> with kind regards
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese


-- 
------------------------------------------------------------
杨易飞
Email:tito001945在gmail.com
MSN:tito_1945在msn.com

每一步,都有新高度。

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年04月18日 星期三 18:26

黄毅 yi.codeplayer在gmail.com
星期三 四月 18 18:26:19 HKT 2007

>
> 啥叫闭包,google了一下没太看懂,回调函数吗?


>>> def foo():
...     a = 1
...     def bar():
...         print a
...     return bar
...
>>> foo()()
1

闭包应该就是所谓的嵌套函数嵌套类吧,里层函数/类会保存外部环境。
也可以改写为:

>>> class foo(object):
...     def __init__(self):
...         self.a = 1
...     def __call__(self):
...         print self.a
...
>>> foo()()
1

楼主问的就是这两者之间的性能差异,我觉得性能上不应该有什么大的不同吧。

闭包函数与普通函数的区别只是 func_closure 属性(任何函数对象都有这个属性)里多了些内容而已。

>>> def foo():
...     a = 1
...     def bar():
...         print a
...     return bar
...
>>> bar = foo()
>>> bar.func_closure[0]

>>> type(bar.func_closure[0])


-- 
http://codeplayer.blogspot.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://python.cn/pipermail/python-chinese/attachments/20070418/db8e0989/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年04月18日 星期三 18:37

R.Potato rough.vanzolo在gmail.com
星期三 四月 18 18:37:03 HKT 2007

> 楼主问的就是这两者之间的性能差异,我觉得性能上不应该有什么大的不同吧。
效率上还是有挺大差距的。python maillist上有人做过测试:
http://mail.python.org/pipermail/python-dev/2003-October/039495.html
大概40%的差距


-- 
BRs,
Li Hongliang

挟一卷书
观天测地
仗一口剑
保家卫国

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年04月18日 星期三 21:51

boyeestudio boyee118在gmail.com
星期三 四月 18 21:51:19 HKT 2007

ÊDz»ÊÇClosuresÕⶫ¶«°¡£¿
http://ivan.truemesh.com/archives/000392.html
http://ivan.truemesh.com/archives/000411.html
http://ivan.truemesh.com/archives/000425.html

ÔÚ07-4-18£¬R. Potato <rough.vanzolo在gmail.com> дµÀ£º
>
> > Â¥Ö÷ÎʵľÍÊÇÕâÁ½ÕßÖ®¼äµÄÐÔÄܲîÒ죬ÎÒ¾õµÃÐÔÄÜÉϲ»Ó¦¸ÃÓÐʲô´óµÄ²»Í¬°É¡£
> ЧÂÊÉÏ»¹ÊÇÓÐͦ´ó²î¾àµÄ¡£python maillistÉÏÓÐÈË×ö¹ý²âÊÔ£º
> http://mail.python.org/pipermail/python-dev/2003-October/039495.html
> ´ó¸Å40%µÄ²î¾à
>
>
> --
> BRs,
> Li Hongliang
>
> Юһ¾íÊé
> ¹ÛÌì²âµØ
> ÕÌÒ»¿Ú½£
> ±£¼ÒÎÀ¹ú
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20070418/198360aa/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年04月19日 星期四 09:38

Nicholas Ding nicholasdsj在gmail.com
星期四 四月 19 09:38:56 HKT 2007

Â¥Ö÷Ò»¶¨¶ÔClosureÓÐÎó½âÁË£¬JavaScriptÀïÃæClosureÓõÄͦ¶àµÄ£¬¶øÇÒÒòΪClosure²»ÏñClassÄÇÑùÕ¼Äڴ棬»¹ÄÜÆðµ½·ÀÖ¹ÄÚ´æ鶵Ä×÷Óá£

Python µÄ Closure ¿´ÆðÀ´Ö»ÄÜÓà lambda À´×öÁË£¬¹¦ÄÜ»¹ÊÇǷȱһµã°É¡£

On 4/18/07, boyeestudio <boyee118在gmail.com> wrote:
>
> ÊDz»ÊÇClosuresÕⶫ¶«°¡£¿
> http://ivan.truemesh.com/archives/000392.html
> http://ivan.truemesh.com/archives/000411.html
> http://ivan.truemesh.com/archives/000425.html
>
> ÔÚ07-4-18£¬R. Potato < rough.vanzolo在gmail.com> дµÀ£º
> >
> > > Â¥Ö÷ÎʵľÍÊÇÕâÁ½ÕßÖ®¼äµÄÐÔÄܲîÒ죬ÎÒ¾õµÃÐÔÄÜÉϲ»Ó¦¸ÃÓÐʲô´óµÄ²»Í¬°É¡£
> > ЧÂÊÉÏ»¹ÊÇÓÐͦ´ó²î¾àµÄ¡£python maillistÉÏÓÐÈË×ö¹ý²âÊÔ£º
> > http://mail.python.org/pipermail/python-dev/2003-October/039495.html
> > ´ó¸Å40%µÄ²î¾à
> >
> >
> > --
> > BRs,
> > Li Hongliang
> >
> > Юһ¾íÊé
> > ¹ÛÌì²âµØ
> > ÕÌÒ»¿Ú½£
> > ±£¼ÒÎÀ¹ú
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese在lists.python.cn
> > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> > Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>
>
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>



-- 
Nicholas @ Nirvana Studio
http://www.nirvanastudio.org
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20070419/9c589e34/attachment-0001.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年04月19日 星期四 10:09

jessinio smith jessinio在gmail.com
星期四 四月 19 10:09:29 HKT 2007

Ìý¶¼Ã»ÓÐÌý¹ýÕâ¸ö¸ÅÄ
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20070419/b17df97b/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年04月19日 星期四 10:35

Ken Zhao zgosken在gmail.com
星期四 四月 19 10:35:35 HKT 2007

闭包概念仿佛是从lisp来的。用闭包是动态语言特性之一,效率方面应该不是很差吧,还请牛人们指教一下~

在07-4-19,jessinio smith <jessinio at gmail.com> 写道:
>
> 听都没有听过这个概念!
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>



-- 
http://www.resee.cn
http://www.zgos.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://python.cn/pipermail/python-chinese/attachments/20070419/54754f58/attachment.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年04月19日 星期四 10:46

SpitFire spitfire2在gmail.com
星期四 四月 19 10:46:06 HKT 2007

Why Functional Programming Matters
中文版
http://blog.csdn.net/DDWN/archive/2006/07/27/984390.aspx

原文

http://www.math.chalmers.se/~rjmh/Papers/whyfp.pdf>

我选择python也是因为他支持fp,closure只是一个小部分


在07-4-19,jessinio smith <jessinio在gmail.com> 写道:
>
> 听都没有听过这个概念!
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>



-- 
SpitFire
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20070419/2cef5d10/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年04月20日 星期五 01:23

Linker Lin linkerlin88在gmail.com
星期五 四月 20 01:23:52 HKT 2007

目前Closure实现的最完美的可能要算Lua语言了。
Python由于使用的是基于栈的VM模型,所以对与Up-value的支持还是不那么完美。
相信,在Python3里面应该会有不小的提升。
Closure的可以理解成类似C++的仿函数(函数对象)差不多的东西。
在Closure里面,作用于超越了函数的边界,被称之为Up-value。
这和仿函数的成员属性是有点神似的。
呵呵。


On 4/19/07, SpitFire <spitfire2在gmail.com> wrote:
>
> Why Functional Programming Matters
> 中文版
> http://blog.csdn.net/DDWN/archive/2006/07/27/984390.aspx
>
> 原文
>
> http://www.math.chalmers.se/~rjmh/Papers/whyfp.pdf>
>
> 我选择python也是因为他支持fp,closure只是一个小部分
>
>
> 在07-4-19,jessinio smith <jessinio在gmail.com> 写道:
> >
> > 听都没有听过这个概念!
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese在lists.python.cn
> > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > Unsubscribe: send unsubscribe to
> > python-chinese-request在lists.python.cn
> > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> >
>
>
>
> --
> SpitFire
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>



-- 
Linker M Lin
linkerlin88在gmail.com
  ※※※※※※※※※
  ※※我思故我在※※
  ※※※※※※※※※
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20070420/70b55031/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号