PythonºÍDecorator£¨×°ÊÎÆ÷£©Ä£Ê½
Ïȸø³öÒ»¸öËÄÈËÍŶÔ
Decorator mode
µÄ¶¨Ò壺
¶¯Ì¬µØ
¸øÒ»¸ö
¶ÔÏó
Ìí¼ÓһЩ
¶îÍâµÄÖ°Ôð
¡£
ÔÙÀ´ËµËµÕâ¸öģʽµÄºÃ´¦£ºÈÏÖ¤£¬È¨ÏÞ¼ì²é£¬¼ÇÈÕÖ¾£¬¼ì²é²ÎÊý£¬¼ÓËø£¬µÈµÈµÈµÈ£¬ÕâЩ¹¦ÄܺÍϵͳҵÎñÎ޹أ¬µ«ÓÖÊÇϵͳËù±ØÐëµÄ£¬ËµµÄ¸üÃ÷°×Ò»µã£¬¾ÍÊÇÃæÏò·½ÃæµÄ±à³Ì£¨
AOP
£©¡£
AOP
°ÑÓëÒµÎñÎ޹صĴúÂëÊ®·Ö¸É¾»µÄ´ÓϵͳÖÐÇиî³öÀ´£¬µ«ÊÇ
Decorator mode
µÄÇ¿´óÔ¶²»Ö¹ÓÚ´Ë£¬±¾ÎĵÄÖØµãÔÚÓÚ
Decorator mode
ÔÚ
Python
ÖеÄÓ¦Óã¬ËùÒԾͲ»ÔÙ¹ý¶àÃèÊö
Decorator mode
±¾ÉíÁË£¬ÒªÏëÉîÈëÁ˽â¸Ãģʽ£¬Çë²Î¿¼ËÄÈËÍŵľµäÖ®×÷¡¶Éè¼ÆÄ£Ê½¡·¡£
ÔÚ
Python
ÖÐ
Decorator mode
¿ÉÒÔ°´ÕÕÏñÆäËü±à³ÌÓïÑÔÈç
C++, Java
µÈµÄÑù×ÓÀ´ÊµÏÖ£¬µ«ÊÇ
Python
ÔÚÓ¦ÓÃ
×°ÊÎ
¸ÅÄî·½ÃæµÄÄÜÁ¦ÉÏÔ¶²»Ö¹ÓÚ´Ë£¬
Python
ÌṩÁËÒ»¸öÓï·¨ºÍÒ»¸ö±à³ÌÌØÐÔÀ´¼ÓÇ¿Õâ·½ÃæµÄ¹¦ÄÜ¡£
Python
ÌṩµÄÓï·¨¾ÍÊÇ×°ÊÎÆ÷Óï·¨
(decorator)
£¬ÈçÏ£º
@aoo
def
foo(): pass
def
aoo(fn):
return fn
ÕâÀï²»¶Ô×°ÊÎÆ÷Óï·¨×ö¹ý¶àµÄ½âÊÍ£¬ÒòΪװÊÎÆ÷Óï·¨Ò²ÊÇ»ùÓÚÎÒ½«Òª½éÉܵÄÁíÒ»¸ö±à³ÌÌØÐÔ£¬µ±ÎÒ½éÉÜÍêÁíÒ»¸ö±à³ÌÌØÐÔºó£¬ÏàÐÅÄã»á¶Ô×°ÊÎÆ÷Óï·¨ÓиüÉîÈëµÄÈÏʶ¡£
Ò»¸öÊ®·ÖÖØÒªµÄ±à³ÌÌØÐÔ“±Õ°ü”
(closure)
Â¡ÖØµÇ³¡£¨ÌâÍâ»°£º¾Ý˵“±Õ°ü”ÒѾ½øÈë
java
ÏÂÒ»°æµÄÌØÐÔºòÑ¡ÁбíÁË£©
ÔÚ
Python
£¬
PHP
£¬
Perl
£¬
Ruby
£¬
JavaScript
µÈ¶¯Ì¬ÓïÑÔÖУ¬¶¼ÒѾʵÏÖÁ˱հüÌØÐÔ£¬
ΪʲôÕâ¸öÌØÐÔÄÇÃ´ÖØÒªÄØ£¿ÎÒÃÇÏÈÀ´¿´¿´ËüµÄͨË×һЩµÄ¶¨Ò壺
OO±à³Ì·¶Ê½ÖеĶÔÏóÊÇ“ÕûºÏÁ˺¯ÊýµÄÊý¾Ý¶ÔÏ󔣬ÄÇô±Õ°ü¾ÍÊÇ“ÕûºÏÁËÊý¾ÝµÄº¯Êý¶ÔÏó”
Ô´Îĵµ <http://blog.csdn.net/muzisoft2008/archive/2009/03/30/4036744.aspx
>
½èÓÃÒ»¸ö·Ç³£ºÃµÄ˵·¨À´×ö¸ö×ܽá(×¢
4
)£º¶ÔÏóÊǸ½ÓÐÐÐΪµÄÊý¾Ý£¬¶ø±Õ°üÊǸ½ÓÐÊý¾ÝµÄÐÐΪ¡£
Ô´Îĵµ <http://www.ibm.com/developerworks/cn/linux/l-cn-closure/index.html
>
ÕâÆªÎÄÕ¸üÏêϸµÄ½éÉÜÁ˱հü
±Õ°üµÄ¸ÅÄî¡¢ÐÎʽÓëÓ¦ÓÃ
Ô´Îĵµ <http://www.ibm.com/developerworks/cn/linux/l-cn-closure/index.html
>
ÏÂÃæ×ó±ßµÄ
foo1
Ö»ÊÇÒ»¸öÆÕͨµÄÄÚǶº¯Êý£¬¶øÓұߵÄ
boo
ÔòÊÇÒ»¸ö±Õ°ü£¬
def
foo(x):
&
Ïà¹ØÎĵµ£º
Python ×Ö·û´®
×Ö·û´®ÊÇ ×Ö·ûµÄÐòÁÐ ¡£×Ö·û´®»ù±¾ÉϾÍÊÇÒ»×éµ¥´Ê¡£
ÎÒ¼¸ºõ¿ÉÒÔ±£Ö¤ÄãÔÚÿ¸öPython³ÌÐòÖж¼ÒªÓõ½×Ö·û´®£¬ËùÒÔÇëÌØ±ðÁôÐÄÏÂÃæÕⲿ·ÖµÄÄÚÈÝ¡£ÏÂÃæ¸æËßÄãÈçºÎÔÚPythonÖÐʹÓÃ×Ö·û´®¡£
ʹÓõ¥ÒýºÅ£¨'£©
Äã¿ÉÒÔÓõ¥ÒýºÅָʾ×Ö·û´®£¬¾ÍÈçͬ'Quote me on this'ÕâÑù¡£ËùÓеĿհף¬¼´¿Õ¸ñºÍÖÆ±í·û¶¼ÕÕÔÑù±£Áô¡£ ......
´ÓÈ¥Ä껹û±ÏÒµ¾Í½Ó´¥Python£¬ÉÏÖÜÓÐЩÎÞÁÄÖØÐÂÔÙ¿´Ò»±é£¬·¢ÏÖÆäȷʵ²»´í¡£Óï·¨¼òµ¥£¬Ò»¸öÏÂÎç»ù±¾Á˽⣬ʹÓÃPydev²å¼þÔÚEclipseÖнøÐпª·¢»ù±¾ÉÏûÓÐÈκÎÕϰ¡£ÖصãÊÇÆäЧÂʺܸߣ¬²»Ðè±àÒëÖ±½ÓÔËÐС£±È½ÏÊʺϽøÐÐÊý¾ÝµÄÔ¤´¦Àí¡£²»´í£¬ÒÔºóÓлú»áºÃºÃÓÃÓᣠ......
Áбí
listÊÇ´¦ÀíÒ»×éÓÐÐòÏîÄ¿µÄÊý¾Ý½á¹¹£¬¼´Äã¿ÉÒÔÔÚÒ»¸öÁбíÖд洢һ¸ö ÐòÁÐ
µÄÏîÄ¿¡£¼ÙÏëÄãÓÐÒ»¸ö¹ºÎïÁÐ±í£¬ÉÏÃæ¼ÇÔØ×ÅÄãÒªÂòµÄ¶«Î÷£¬Äã¾ÍÈÝÒ×Àí½âÁбíÁË¡£Ö»²»¹ýÔÚÄãµÄ¹ºÎï±íÉÏ£¬¿ÉÄÜÿÑù¶«Î÷¶¼¶À×ÔÕ¼ÓÐÒ»ÐУ¬¶øÔÚPythonÖУ¬
ÄãÔÚÿ¸öÏîĿ֮¼äÓöººÅ·Ö¸î¡£
ÁбíÖеÄÏîĿӦ¸Ã°üÀ¨ÔÚ·½À¨ºÅÖУ¬ÕâÑùPython¾ÍÖªµÀÄãÊÇ ......
python ûÓÐÊý×éµÄÊý¾Ý½á¹¹
#list ÐòÁÐ
sample_list = [1,2,3,'abc']
#dictionary ×Öµä
sample_dic = {"key":value, 2:3}
#tuple Ö»¶ÁµÄÐòÁÐ
sample_tuple = (1,3,"ab")
Ðò±í
Ðò±íÓÉһϵÁÐÖµÓöººÅ·Ö¸ô¶ø³É
Ðò±íÓë×Ö·û´®Ò»ÑùÊDz»¿É±äµÄ£º²»ÔÊÐí¶ÔÐ ......