PythonÖ®ÃÀ DecoratorÉîÈëÏê½â(Ò»)
There should be one—--and preferably only one –--obvious way to do it.
----Õª×ÔThe Zen of Python, by Time Peters
һЩÍùÊÂ
ÔÚÕýʽ½øÈëDecorator»°Ìâ֮ǰ£¬ÇëÔÊÐíÎÒ½²Ò»¸öС¹ÊÊ¡£
ÔÚ×î½üµÄÏîÄ¿¿ª·¢¹ý³ÌÖУ¬Ò»Î»Í¬ÊÂÔÚ¶ÁÎҵĴúÂëµÄʱºò£¬Ìá³öÖÊÒÉ£¬ÎªÊ²Ã´Í¬ÑùµÄÑéÖ¤´úÂëÒªÖØ¸´³öÏÖÔÚ·þÎñ½Ó¿ÚÖÐÄØ£¿
Èçij·þÎñ½Ó¿ÚÊÇÓÎÏ·ÖеÄÍæ¼ÒÏ뽨Ô콨Öþ£º
def build(user, build_name):
if not is_user_valid(user):
redirect("/auth/login/")
return False
#do something here
return create_building(build_name)
ÔÚbuildÕâ¸ö·½·¨ÖУ¬Ç°3ÐÐÊÇÓÃÀ´¼ì²âÍæ¼ÒÊÇ·ñÒѾÑéÖ¤¹ýµÄ£¬Èç¹ûÊÇ·ÇÑéÖ¤µÄÍæ¼Ò£¬¾ÍÖØ¶¨Ïòµ½µÇÂ½Ò³Ãæ£»Èç¹ûÊÇÑéÖ¤¹ýµÄÍæ¼Ò£¬¾Í¸øËû½¨ÔìËûÏëÒªµÄ½¨Öþ¡£
ËûÖ¸³öÕâÑùµÄ3ÐÐÑéÖ¤´úÂë(ËäÈ»ÒѾºÜ¶Ì)½«»á³öÏÖÈÎÒâÒ»¸öÍæ¼Ò·þÎñ½Ó¿ÚÖЗ—Éý¼¶½¨Öþ¡¢²ð½¨Öþ¡¢ÉõÖÁÊÇÆµ·±µÄÁÄÌ죬ÎÒ˵ÕâÖ»ÊÇCtrl+C¡¢Ctrl+VµÄʱ¼ä°¡£¬µ«ÊÇÄÇʱºòÎÒÉîÏ룬Èç¹ûÏÖÔÚÐèÇóÓб䶯£¬ÒªÔÚÔÀ´µÄÑé֤ʧ°ÜµÄÇé¿öÏ£¬Ð´ÈÕÖ¾£¬ÄÇÔÀ´µÄ3ÐдúÂë¾Í±ä³É4ÐУº
if not is_user_valid(user):
redirect("/auth/login/")
log_warning(" %s is trying to enter without permission!" %(user["name"]))
return False
¸üÍ´¿àµÄÊÇ£¬ÄãÒªÔÚÿ¸ö³öÏÖif not is_u
Ïà¹ØÎĵµ£º
python µÄÄÚǶtimeÄ£°å·Ò뼰˵Ã÷
Ò»¡¢¼ò½é
timeÄ£¿éÌṩ¸÷ÖÖ²Ù×÷ʱ¼äµÄº¯Êý
˵Ã÷£ºÒ»°ãÓÐÁ½ÖÖ±íʾʱ¼äµÄ·½Ê½:
µÚÒ»ÖÖÊÇʱ¼ä´ÁµÄ·½Ê½(Ïà¶ÔÓÚ1970.1.1 00:00:00ÒÔÃë¼ÆËãµÄÆ«ÒÆÁ¿),ʱ¼ä´ÁÊÇΩһµÄ
µÚ¶þÖÖÒÔÊý× ......
PythonÄÚ½¨Òì³£Ìåϵ½á¹¹
BaseException
+--¡¡SystemExit
+--¡¡KeyboardInterrupt
+--¡¡GeneratorExit
+--¡¡Exception
+--¡¡StopIteration
+--¡¡StandardError
|¡¡¡¡¡¡¡¡+--¡¡BufferError
|¡¡¡¡¡¡¡¡+--¡¡ArithmeticError
|¡¡¡¡¡¡¡¡|¡¡¡¡¡¡¡¡+--¡¡FloatingPointError
|¡¡¡¡¡¡¡¡|¡¡¡¡¡¡¡¡+--¡¡OverflowError
|¡¡¡¡ ......
Memcached
ÊÇdanga.com£¨ÔËÓªLiveJournalµÄ¼¼ÊõÍŶӣ©¿ª·¢µÄÒ»Ì×·Ö²¼Ê½ÄÚ´æ¶ÔÏ󻺴æÏµÍ³£¬ÓÃÓÚÔÚ¶¯Ì¬ÏµÍ³ÖмõÉÙÊý¾Ý¿â¸ºÔØ£¬ÌáÉýÐÔÄÜ¡£
ÍøÉÏÓкིܶµ½Memcached For LinuxµÄ°²×°½Ì³Ì£¬µ«ÊÇMemcached For Win32 and PythonµÄ¾ÍÉõÉÙ£¬Å¼¶ûgoogleÕÒµ½Ò»Æª
±È½ÏÏà½üµÄÓ¢ÎĽ̳̣¬¾õµÃ ......
¡¾windows+python3.1.2¡¿
·¢²¼pythonÓ¦ÓóÌÐòÊǸöºÜÂé·³µÄÊ£¬ÒòΪ<1>ÎÞ·¨±àÒëÔÉúcode<2>ÿ¸ö°æ±¾µÄ×Ö½ÚÂ벻ͬ<3>Èç¹ûÖ±½ÓÉÏÔ´Âë»áËðº¦×Ô¼ºµÄÀûÒæ——µÈµÈ
·½·¨1——ÊÖ¶¯´ò°ü
Ôõô´ò°üÄØ£¿Ò»¸öpythonÎļþ¼ÐÒª¶þÊ®¶àMB°¡£¡
yes£¡ÎÒÃǾÍÒªÇåÀíÎÞÓõĶ«Î÷£¡
ÏÈдһ¸öwin.pyÎļþ£º ......