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.exeËùÔÚµÄĿ¼¸½¼Óµ½PATHÕâ¸ö»·¾³±äÁ¿ÖС£
¶þ¡¢ÈçºÎʹPython½âÊÍÆ÷ÄÜÖ±½ÓimportĬÈϰ²×°Â·¾¶ÒÔÍâµÄµÚÈý·½Ä£¿é£¿
ΪÁËÄÜimportĬÈϰ²×°Â·¾¶ÒÔÍâµÄµÚÈý·½µÄÄ£¿é£¨Èç×Ô¼ºÐ´µÄÄ£¿é£©£¬ÐèҪн¨PYTHONPATH»·¾³±äÁ¿£¬»·¾³±äÁ¿µÄÖµÉè ......
Python Áбí
listÊÇ´¦ÀíÒ»×éÓÐÐòÏîÄ¿µÄÊý¾Ý½á¹¹£¬¼´Äã¿ÉÒÔÔÚÒ»¸öÁбíÖд洢һ¸ö ÐòÁÐ µÄÏîÄ¿¡£¼ÙÏëÄãÓÐÒ»¸ö¹ºÎïÁÐ±í£¬ÉÏÃæ¼ÇÔØ×ÅÄãÒªÂòµÄ¶«Î÷£¬Äã¾ÍÈÝÒ×Àí½âÁбíÁË¡£Ö»²»¹ýÔÚÄãµÄ¹ºÎï±íÉÏ£¬¿ÉÄÜÿÑù¶«Î÷¶¼¶À×ÔÕ¼ÓÐÒ»ÐУ¬¶øÔÚPythonÖУ¬ÄãÔÚÿ¸öÏîĿ֮¼äÓöººÅ·Ö¸î¡£
ÁбíÖеÄÏîĿӦ¸Ã°üÀ¨ÔÚ·½À¨ºÅÖУ¬ÕâÑùPython¾ÍÖªµÀÄãÊ ......
1 #!/usr/bin/python ʹÓÃħ·¨×Ö·ûµ÷ÓÃpython
2
3 from sys import argv µ¼ÈësysÊǵ¼Èëpython½âÊÍÆ÷ºÍËû»·¾³Ïà¹ØµÄ²ÎÊý
4 from os import makedirs,unlink,sep
osÖ÷ÒªÌṩ¶Ôϵͳ·¾¶£¬ÎļþÖØÃüÃûºÍɾ³ýÎļþËùÐèµÄº¯Êý
makedirsÊÇ´´½¨µÝ¹éÎļþ¼ÐµÄº¯Êý¡£±ÈÈç˵ÎÒÃÇÒª´´½¨Ò»¸öеÄĿ¼£¬/python/HTML/crawl,µ«ÊÇÄ ......
ǰ¼¸Ìì¿´µ½ÁËÒ»ÐÐÇó1000µÄ½×³ËµÄPython´úÂ룺
print
reduce
(
lambda
x
,
y
:
x
*
y
,
range
(
1
,
1001
))
Ò»ÏÂ×Ó±»python´úÂëµÄ¾«¼ò
Óë½ô´ÕËùÕÛ·þ£¬¹Ê¶Ô´úÂë½øÐÐÁ˼òµ¥µÄ·ÖÎö¡£
reduceÓërange¶¼ÊÇPythonµÄÄÚÖú¯Êý¡£
range£¨1£¬10 ......
1 Ó°ÏñÓëͼÐÎ×ÊÁϵĴ¦Àí
ÌÖÂÛͼÐÎ(Ó°Ïñ) ±¾ÉíµÄ´¦Àí£¬¶øÌÖÂÛµÄÄÚÈݽ«»á¼¯ÖÐÔÚPython Imaging Library (PIL) ÕâÒ»Ì׳Ìʽ¿âÉÏ¡£
PIL ÊÇPython ÏÂ×îÓÐÃûµÄÓ°Ïñ´¦ÀíÌ×¼þ£¬ÓÉÐí¶à²»Í¬µÄÄ£×éËù×é³É£¬²¢ÇÒÌṩÁËÐí¶àµÄ´¦Àí¹¦ÄÜ£¬ÔÊÐíÎÒÃÇÔÚ¼òµ¥µÄPython ³ÌʽÀï½øÐÐÓ°ÏñµÄ´¦Àí¡£ ʹÓÃÏñPIL ÐíÑùµÄ³Ìʽ¿âÌ ......