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)
¡Öصdz¡£¨ÌâÍâ»°£º¾Ý˵“±Õ°ü”ÒѾ½øÈë
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 Áбí
listÊÇ´¦ÀíÒ»×éÓÐÐòÏîÄ¿µÄÊý¾Ý½á¹¹£¬¼´Äã¿ÉÒÔÔÚÒ»¸öÁбíÖд洢һ¸ö ÐòÁÐ µÄÏîÄ¿¡£¼ÙÏëÄãÓÐÒ»¸ö¹ºÎïÁÐ±í£¬ÉÏÃæ¼ÇÔØ×ÅÄãÒªÂòµÄ¶«Î÷£¬Äã¾ÍÈÝÒ×Àí½âÁбíÁË¡£Ö»²»¹ýÔÚÄãµÄ¹ºÎï±íÉÏ£¬¿ÉÄÜÿÑù¶«Î÷¶¼¶À×ÔÕ¼ÓÐÒ»ÐУ¬¶øÔÚPythonÖУ¬ÄãÔÚÿ¸öÏîÄ¿Ö®¼äÓöººÅ·Ö¸î¡£
ÁбíÖеÄÏîÄ¿Ó¦¸Ã°üÀ¨ÔÚ·½À¨ºÅÖУ¬ÕâÑùPython¾ÍÖªµÀÄãÊ ......
Python ÓÃÏ»®Ïß×÷Ϊ±äÁ¿Ç°×ººÍºó׺ָ¶¨ÌØÊâ±äÁ¿¡£
_xxx
²»ÄÜÓÃ'from module import *'µ¼Èë
__xxx__ ϵͳ¶¨ÒåÃû×Ö
__xxx
ÀàÖеÄ˽ÓбäÁ¿Ãû
ºËÐÄ·ç¸ñ£º±ÜÃâÓÃÏ»®Ïß×÷Ϊ±äÁ¿ÃûµÄ¿ªÊ¼¡£
ÒòΪÏ»®Ï߶ԽâÊÍÆ÷ÓÐÌØÊâµÄÒâÒ壬¶øÇÒÊÇÄÚ½¨±êʶ·ûËùʹÓõķûºÅ£¬ÎÒÃǽ¨Òé³ÌÐò ......
±ê׼ͷ²¿
#!/usr/bin/python
±àÂë
ËùÓÐµÄ Python ½Å±¾Îļþ¶¼Ó¦ÔÚÎļþÍ·±êÉÏ #-*- coding:utf8 -*- ¡£ÉèÖñà¼Æ÷£¬Ä¬Èϱ£´æΪ utf8 ¸ñʽ¡£
mainº¯Êý
Ó¦ÓóÌÐòÒª¶¨Òåmainº¯Êý¶ø²»ÒªÖ±½Óд½Å±¾
def main():
dosomething()
if
__name__ == "__main__"
:
main()
Èç¹ûÊÇÈ«¾Ö±äÁ¿£¬ÔòÐèÒªÏÔʽ¼ÓÉ ......
python ûÓÐÊý×éµÄÊý¾Ý½á¹¹
#list ÐòÁÐ
sample_list = [1,2,3,'abc']
#dictionary ×Öµä
sample_dic = {"key":value, 2:3}
#tuple Ö»¶ÁµÄÐòÁÐ
sample_tuple = (1,3,"ab")
Ðò±í
Ðò±íÓÉһϵÁÐÖµÓöººÅ·Ö¸ô¶ø³É
Ðò±íÓë×Ö·û´®Ò»ÑùÊDz»¿É±äµÄ£º²»ÔÊÐí¶ÔÐ ......
1 Ó°ÏñÓëͼÐÎ×ÊÁϵĴ¦Àí
ÌÖÂÛͼÐÎ(Ó°Ïñ) ±¾ÉíµÄ´¦Àí£¬¶øÌÖÂÛµÄÄÚÈݽ«»á¼¯ÖÐÔÚPython Imaging Library (PIL) ÕâÒ»Ì׳Ìʽ¿âÉÏ¡£
PIL ÊÇPython ÏÂ×îÓÐÃûµÄÓ°Ïñ´¦ÀíÌ×¼þ£¬ÓÉÐí¶à²»Í¬µÄÄ£×éËù×é³É£¬²¢ÇÒÌṩÁËÐí¶àµÄ´¦Àí¹¦ÄÜ£¬ÔÊÐíÎÒÃÇÔÚ¼òµ¥µÄPython ³ÌʽÀï½øÐÐÓ°ÏñµÄ´¦Àí¡£ ʹÓÃÏñPIL ÐíÑùµÄ³Ìʽ¿âÌ ......