Time of Update: 2016-06-06
關於設計模式中的觀察者模式,定義如下(維基百科):觀察者模式(有時又被稱為發布/訂閱模式)是軟體設計模式的一種。在此種模式中,一個目標物件管理所有相依於它的觀察者物件,並且在它本身的狀態改變時主動發出通知。這通常透過呼叫各觀察者所提供的方法來實現。此種模式通常被用來實作事件處理系統。簡單來說,一個被觀察者有很多觀察者,被觀察者的狀態的改變會引起所有觀察者的響應操作。那麼我們用Python2.7來實現觀察者模式。Python中的集合set集合(set),類似於列表(list),但是它沒有重複的元素
Time of Update: 2016-06-06
代碼如下:#!/usr/bin/python #-*-coding:utf-8-*-from PyQt4.QtGui import *from PyQt4.QtCore import *from PyQt4.Qt import *class ChangeSkinWidget(QWidget): def __init__(self,parent = None): super(ChangeSkinWidget,self).__init__(parent) self.setFixedSize(1
Time of Update: 2016-06-06
代碼如下:#-*- encoding: utf-8 -*-'''Created on 2014-4-24@author: Leon Wong'''import urllib2import urllibimport reimport timeimport osimport uuid#擷取二級頁面urldef findUrl2(html): re1 = r'http://tuchong.com/\d+/\d+/|http://\w+(? url2list = re.findall(re1
Time of Update: 2016-06-06
代碼如下:#!/usr/bin/env pythonimport sys,timefrom socket import socketdef read_interface(in_file): with file(in_file) as f: return f.readlines()[2:]def set_interface(inter_msg): dic={} for i in xrange(len(inter_msg)):
Time of Update: 2016-06-06
一、爬山法簡介爬山法(climbing method)是一種最佳化演算法,其一般從一個隨機的解開始,然後逐步找到一個最優解(局部最優)。 假定所求問題有多個參數,我們在通過爬山法逐步獲得最優解的過程中可以依次分別將某個參數的值增加或者減少一個單位。例如某個問題的解需要使用3個整數類型的參數x1、x2、x3,開始時將這三個參數設值為(2,2,-2),將x1增加/減少1,得到兩個解(1,2,-2), (3, 2,-2);將x2增加/減少1,得到兩個解(2,3, -2),(2,1,
Time of Update: 2016-06-06
SQLObject和SQLAlchemy都是Python語言下的ORM(對象關係映射)解決方案,其中SQLAlchemy被認為是Python下事實上的ORM標準。當然,兩者都很優秀。一、安裝 代碼如下:sudo pip install SQLObject使用SQLObject操作mysql時候報錯ImportError: No module named MySQLdb,那便安裝MySQLdb: 代碼如下:sudo pip install MySQL-python沒想到又報錯了:
Time of Update: 2016-06-06
實現了在一個欄位儲存以逗號分隔的字串,返回一個相應的列表 代碼如下:from django import formsfrom django.db import modelsfrom django.utils.text import capfirstfrom django.core import exceptionsclass MultiSelectFormField(forms.MultipleChoiceField): widget =
Time of Update: 2016-06-06
翻牆常用的方式就是使用代理(Proxy),其基本過程如下:瀏覽器Proxy 伺服器伺服器如果瀏覽器請求不到伺服器,或者伺服器無法響應瀏覽器,我們可以設定將瀏覽器的請求傳遞給Proxy 伺服器,Proxy 伺服器將請求轉寄給伺服器。然後,Proxy 伺服器將伺服器的響應內容傳遞給瀏覽器。當然,Proxy 伺服器在得到請求或者響應內容的時候,本身也可以做些處理,例如緩衝靜態內容以加速,或者說提取請求內容或者響應內容做些正當或者不正當的分析。這種翻牆方式,就是設計模式中代理模式(Proxy
Time of Update: 2016-06-06
1.為模組nester建立檔案夾nester,其中包含:nester.py(模組檔案): 代碼如下:"""這是"nester.py"模組,提供了一個名為print_lol()函數, 函數作用是列印列表,氣質包含嵌套列表"""def print_lol(the_list): """這個函數取了一個位置參數,名為"the_list",可以是任何python列表 所指定的列表中的每一個資料項目會遞迴地輸出到螢幕上,各資料項目佔一行""" for each_item in
Time of Update: 2016-06-06
代碼如下: #!/usr/bin/python #-*-coding:utf-8-*-from PyQt4.QtGui import *from PyQt4.QtCore import *from PyQt4.Qt import *class CLabel(QWidget): signalLabelPress = pyqtSignal() def __init__(self,parent = None): super(CLabel,self).__init__(parent)
Time of Update: 2016-06-06
代碼如下:# -*- coding: cp936 -*-import sysimport urllib2import jsonfrom PyQt4 import QtCore, QtGuiclass MyWindow( QtGui.QLCDNumber,QtGui.QWidget): def __init__(self, parent=None): super(MyWindow,self).__init__(parent)
Time of Update: 2016-06-06
代碼如下:#encoding:utf-8import socketimport htmllib,formatterdef open_socket(host,servname): s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) port=socket.getservbyname(servname) s.connect((host,port)) return
Time of Update: 2016-06-06
Cookie用於伺服器實現會話,使用者登入及相關功能時進行狀態管理。要在使用者瀏覽器上安裝cookie,HTTP伺服器向HTTP響應添加類似以下內容的HTTP前序: 代碼如下:Set-Cookie:session=8345234;expires=Sun,15-Nov-2013 15:00:00
Time of Update: 2016-06-06
Tornado 文檔中提到但是這樣只能捕獲到handlers中列出的路徑請求中的錯誤。如果只定義了(r"/hello", HelloHandler) 一條規則,那麼只能捕獲到 /hello/other,這樣的未定義路徑請求,而像/he、/helloworld、/he/other這樣的會直接顯示Tornado預設的404錯誤頁面,而不會顯示自訂的錯誤頁面。解決方案很簡單只需要在路由規則的最後加一條(r".*",
Time of Update: 2016-06-06
代碼如下:# -*- coding: utf-8 -*-import sysimport MySQLdbreload(sys)sys.setdefaultencoding('utf-8')class DB(object): def __init__(self,host='127.0.0.1',port=3306,user='root',passwd='123',database=''): self.__host=host self.__port=port self.__user=user
Time of Update: 2016-06-06
用git來管理工程的開發,git log是非常有用的‘曆史'資料,需求就是來自這裡,我們希望能對git log有一個定製性強的過濾。此段指令碼就是在完成這種類型的任務。對於一個repo所有branch中的commit,指令碼將會把message中存在BUG ID的一類commits給提取整理出來,並提供了額外的search_key, 用於定製過濾。 代碼如下:# -*- coding: utf-8 -*-# created by vince67 Feb.2014#
Time of Update: 2016-06-06
漢諾塔(又稱河內塔)問題是源於印度一個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石砫子,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一個圓盤。 代碼如下:times = 0def test(num,a,b,c): globaltimes ifnum==1: print (a,b) times+=1 else:
Time of Update: 2016-06-06
很多語言都提供了對參數或變數進行處理的機制,作為靈活的Python,提供了一些針對函數處理的特殊方法filter(function, sequence): 對sequence中的item依次執行function(item),將執行結果為True的item組成一個List/String/Tuplemap(function, sequence) : 對sequence中的item依次執行function(item),見執行結果組成一個Listreduce(function, sequence,
Time of Update: 2016-06-06
測試url:http://tieba.baidu.com/p/27141123322?pn=begin 1end 4 代碼如下:import string ,urllib2def baidu_tieba(url,begin_page,end_page): for i in range(begin_page, end_page+1): sName = string.zfill(i,5)+ '.html' print '正在下載第' + str(i) +
Time of Update: 2016-06-06
一、python中對檔案、檔案夾操作時經常用到的os模組和shutil模組常用方法。1.得到當前工作目錄,即當前Python指令碼工作的目錄路徑: