今天來討論一下裝飾器。裝飾器是一個很著名的設計模式,經常被用于有切面需求的場景,較為經典的有插入日志、性能測試、事務處理等。裝飾器是解決這類問題的絕佳設計,有了裝飾器,我們就可以抽離出大量函數中與函數功能本身無關的雷同代碼并繼續重用。概括的講,裝飾器的作用就是為已經存在的對象添加額外的功能。1.裝飾器入門1.1.需求是怎么來的?裝飾器的定義很是抽象,我們來看一個小例子。復制代碼代碼如下:deffoo():print'infoo()'foo()這是一個很無聊
系統 2019-09-27 17:45:33 1756
SessionMiddleware激活后,每個傳給視圖(view)函數的第一個參數``HttpRequest``對象都有一個session屬性,這是一個字典型的對象。你可以象用普通字典一樣來用它。例如,在視圖(view)中你可以這樣用:#Setasessionvalue:request.session["fav_color"]="blue"#Getasessionvalue--thiscouldbecalledinadifferentview,#orman
系統 2019-09-27 17:38:45 1756
在業務穩定性要求比較高的情況下,運維為能及時發現問題,有時需要對應用程序的日志進行實時分析,當符合某個條件時就立刻報警,而不是被動等待出問題后去解決,比如要監控nginx的$request_time和$upstream_response_time時間,分析出最耗時的請求,然后去改進代碼,這時就要對日志進行實時分析了,發現時間長的語句就要報警出來,提醒開發人員要關注,當然這是其中一個應用場景,通過這種監控方式還可以應用到任何需要判斷或分析文件的地方,所以今天
系統 2019-09-27 17:38:40 1756
實例如下:#環境:python3.xdefgetExportDbSql(db,index):#獲取導出一個數據庫實例的sql語句sql='mysqldump-u%s-p%s-h%s-P%d--default-character-set=utf8--databasesmu_ins_s%s>%s.s%d.mu_ins_%d.sql'%(db['user'],db['pwd'],db['host'],db['port'],index,db['server'],i
系統 2019-09-27 17:38:36 1756
先給出結論:要替換的字符數量不多時,可以直接鏈式replace()方法進行替換,效率非常高;如果要替換的字符數量較多,則推薦在for循環中調用replace()進行替換??尚械姆椒ǎ?.鏈式replace()string.replace().replace()1.x在for循環中調用replace()「在要替換的字符較多時」2.使用string.maketrans3.先re.compile然后re.sub……defa(text):chars=""for
系統 2019-09-27 17:38:36 1756
######################分支語句python3.5#################代碼的縮進格式很重要建議4個空格來控制#根據邏輯值(True,Flase)判斷程序的運行方向#Ture:表示非空的量(String,tuple元組、list、set、dictonary),所有非零的數字#False:0,None、空的量#邏輯表達式可以包含邏輯運算符andornotif:##################################
系統 2019-09-27 17:38:35 1756
深入理解pythontry異常處理機制#python的try語句有兩種風格#一:種是處理異常(try/except/else)#二:種是無論是否發生異常都將執行最后的代碼(try/finally)try/except/else風格try:<語句>#運行別的代碼except<名字>:<語句>#如果在try部份引發了'name'異常except<名字>,<數據>:<語句>#如果引發了'name'異常,獲得附加的數據else:<語句>#如果沒有異常發生#try的
系統 2019-09-27 17:38:34 1756
在Python2.5中,with關鍵字被加入。它將常用的try...except...finally...模式很方便的被復用??匆粋€最經典的例子:withopen('file.txt')asf:content=f.read()在這段代碼中,無論with中的代碼塊在執行的過程中發生任何情況,文件最終都會被關閉。如果代碼塊在執行的過程中發生了一個異常,那么在這個異常被拋出前,程序會先將被打開的文件關閉。再看另外一個例子。在發起一個數據庫事務請求的時候,經常會用
系統 2019-09-27 17:38:19 1756
先看代碼:In[1]:a={'name':'wang'}In[2]:a.get('age')In[3]:a['age']---------------------------------------------------------------------------KeyErrorTraceback(mostrecentcalllast)in()---->1a['age']KeyError:'age'In[4]:a.get('age',10)Out[4
系統 2019-09-27 17:38:06 1756
以下函數列出某個目錄下(包括子目錄)所有文件,本隨筆重點不在于遞歸函數的實現,這是一個很簡單的遞歸,重點在于熟悉Python庫os以及os.path一些函數的功能和用法。1.os.listdir(path):列出path下所有內容(包括文件和目錄,不包括.和..)2.os.path.join(path1,path2,path3...):拼接目錄,例如將'home','test'拼接成'home/test/'3.os.path.isdir(path):判斷p
系統 2019-09-27 17:38:04 1756