Time of Update: 2016-06-06
這裡是簡單的安裝和使用記錄,首先要有一個可用的mongo環境,win環境或者linux環境都可以。 假定你對mongo有所瞭解和知道一些命令列操作。安裝和更新跟大多數py包安裝一樣,可以源碼安裝,也可以使用pip或者easy_install來安裝安裝 代碼如下:pip install pymongo升級 代碼如下:pip install --upgrade pymongo其他安裝方法請參照文檔pymongo安裝操作官網教程小案例 代碼如下:#-*- coding: utf-8
Time of Update: 2016-06-06
函數作為傳回值高階函數除了可以接受函數作為參數外,還可以把函數作為結果值返回。我們來實現一個可變參數的求和。通常情況下,求和的函數是這樣定義的:def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax但是,如果不需要立刻求和,而是在後面的代碼中,根據需要再計算怎麼辦?可以不返回求和的結果,而是返回求和的函數!def lazy_sum(*args): def sum(): ax = 0 for n
Time of Update: 2016-06-06
在Class內部,可以有屬性和方法,而外部代碼可以通過直接調用執行個體變數的方法來操作資料,這樣,就隱藏了內部的複雜邏輯。但是,從前面Student類的定義來看,外部代碼還是可以自由地修改一個執行個體的name、score屬性:>>> bart = Student('Bart Simpson', 98)>>> bart.score98>>> bart.score = 59>>>
Time of Update: 2016-06-06
由於函數也是一個對象,而且函數對象可以被賦值給變數,所以,通過變數也能調用該函數。>>> def now():... print '2013-12-25'...>>> f = now>>> f()2013-12-25函數對象有一個__name__屬性,可以拿到函數的名字:>>> now.__name__'now'>>>
Time of Update: 2016-06-06
在OOP程式設計中,當我們定義一個class的時候,可以從某個現有的class繼承,新的class稱為子類(Subclass),而被繼承的class稱為基類、父類或超類(Base class、Super class)。比如,我們已經編寫了一個名為Animal的class,有一個run()方法可以直接列印:class Animal(object): def run(self): print 'Animal is
Time of Update: 2016-06-06
當我們拿到一個對象的引用時,如何知道這個對象是什麼類型、有哪些方法呢?使用type()首先,我們來判斷物件類型,使用type()函數:基本類型都可以用type()判斷:>>> type(123)>>> type('str')>>> type(None)如果一個變數指向函數或者類,也可以用type()判斷:>>> type(abs)>>> type(a)但是type()函數返回的是什麼類型呢?它返回type類型。如果我們要在if語句中判斷,就需要比較兩個變數的type類型是否相同:>>>
Time of Update: 2016-06-06
Python的functools模組提供了很多有用的功能,其中一個就是偏函數(Partial function)。要注意,這裡的偏函數和數學意義上的偏函數不一樣。在介紹函數參數的時候,我們講到,通過設定參數的預設值,可以降低函數調用的難度。而偏函數也可以做到這一點。舉例如下:int()函數可以把字串轉換為整數,當僅傳入字串時,int()函數預設按十進位轉換:>>>
Time of Update: 2016-06-06
Python本身就內建了很多非常有用的模組,只要安裝完畢,這些模組就可以立刻使用。我們以內建的sys模組為例,編寫一個hello的模組:#!/usr/bin/env python# -*- coding: utf-8 -*-' a test module '__author__ = 'Michael Liao'import sysdef test(): args = sys.argv if len(args)==1: print 'Hello, world!' elif
Time of Update: 2016-06-06
代碼如下:display text in large ASCII art fonts 顯示大ASCII藝術字型這種東西在源碼聲明或者軟體初始化控制台列印時候很有用。 例如:這是查看HTML源碼中而來,看到這種字型的網站名稱,很cool,下面就介紹一下Python中如何輸出這種字元字。 代碼如下:$ sudo apt-get install figlet$ figlet orangleliu _ _ _ ___ _
Time of Update: 2016-06-06
Python的每個新版本都會增加一些新的功能,或者對原來的功能作一些改動。有些改動是不相容舊版本的,也就是在目前的版本運行正常的代碼,到下一個版本運行就可能不正常了。從Python 2.7到Python 3.x就有不相容的一些改動,比如2.x裡的字串用'xxx'表示str,Unicode字串用u'xxx'表示unicode,而在3.x中,所有字串都被視為unicode,因此,寫u'xxx'和'xxx'是完全一致的,而在2.x中以'xxx'表示的str就必須寫成b'xxx',以此表示“二進位字串”
Time of Update: 2016-06-06
Python標準庫中collections對集合類型的資料結構進行了很多拓展操作,這些操作在我們使用集合的時候會帶來很多的便利,多看看很有好處。defaultdict是其中一個方法,就是給字典value元素添加預設類型,之前看到過但是沒注意怎麼使用,今天特地瞅了瞅。首先是各大文章介紹的第一個例子: 代碼如下:import collections as coll def default_factory(): return 'default value' d =
Time of Update: 2016-06-06
安裝很簡單 代碼如下:pip install psutil官網地址為:https://pythonhosted.org/psutil/ (文檔上有詳細的api)github地址為:https://github.com/giampaolo/psutil/psutil比較好的地方,一個是跨平台,不需要切換平台的時候在重新開放了,另外一個好處的工具集中CPU, memory, disks, network,這些資訊都可以獲得到。可以用來做系統監控,效能分析,進程管理。 可以支援的系統有Linux,
Time of Update: 2016-06-06
繼承是物件導向編程的一個重要的方式,因為通過繼承,子類就可以擴充父類的功能。回憶一下Animal類層次的設計,假設我們要實現以下4種動物: Dog - 狗狗; Bat - 蝙蝠; Parrot - 鸚鵡; Ostrich - 鴕鳥。如果按照哺乳動物和鳥類歸類,我們可以設計出這樣的類的層次:但是如果按照“能跑”和“能飛”來歸類,我們就應該設計出這樣的類的層次:如果要把上面的兩種分類都包含進來,我們就得設計更多的層次:
Time of Update: 2016-06-06
在寫一個多線程類的時候調用報錯 RuntimeError: thread.__init__() not called 代碼如下:class NotifyTread(threading.Thread): def __init__(self, params): threading.Thread.__init__(self) #here。。。。。。 self.params = params def run(self):
Time of Update: 2016-06-06
本文執行個體講述了python將文本轉換成圖片輸出的方法。分享給大家供大家參考。具體實現方法如下:#-*- coding:utf-8 -*-from PIL import Image,ImageFont,ImageDrawtext = u'歡迎訪問,http://www.bitsCN.com'font = ImageFont.truetype("msyh.ttf",18)lines = []line =''for word in text.split(): print word if
Time of Update: 2016-06-06
本文執行個體講述了python實現從網路下載檔案並獲得檔案大小及類型的方法。分享給大家供大家參考。具體實現方法如下:import urllib2from settings import COOKIESopener = urllib2.build_opener()cookies = ";".join("%s=%s" % (k, v) for k, v in COOKIES.items())opener.addheaders.append(('Cookie', cookies))req =
Time of Update: 2016-06-06
內網的主機都是自動分配ip地址,有時候需要查看下有那些ip在使用,就寫了個簡單的指令碼。linux和windows下都可以用,用多線程來ping1-255所有的地址,效率不高,2分鐘左右。 先湊合和用吧。#-*- coding: utf-8 -*- #author: orangleliu date: 2014-11-12 #python2.7.x ip_scaner.py ''''' 不同平台,實現對所在內網端的ip掃描 有時候需要知道所在區域網路的有效ip,但是又不想找特定的工具來掃描。
Time of Update: 2016-06-06
python發送email還是比較簡單的,可以通過登入郵件服務來發送,linux下也可以使用調用sendmail命令來發送,還可以使用本地或者是遠端smtp服務來發送郵件,不管是單個,群發,還是抄送都比較容易實現。先把幾個最簡單的發送郵件方式記錄下,像html郵件,附件等也是支援的,需要時查文檔即可1、登入郵件服務 代碼如下:#!/usr/bin/env python # -*- coding: utf-8 -*- #python2.7x
Time of Update: 2016-06-06
type()動態語言和靜態語言最大的不同,就是函數和類的定義,不是編譯時間定義的,而是運行時動態建立的。比方說我們要定義一個Hello的class,就寫一個hello.py模組:class Hello(object): def hello(self, name='world'): print('Hello, %s.' % name)當Python解譯器載入hello模組時,就會依次執行該模組的所有語句,執行結果就是動態建立出一個Hello的class對象,測試如下:>>> from
Time of Update: 2016-06-06
本文執行個體講述了python中尾遞迴用法。分享給大家供大家參考。具體分析如下:如果一個函數中所有遞迴形式的調用都出現在函數的末尾,我們稱這個遞迴函式是尾遞迴的。當遞迴調用是整個函數體中最後執行的語句且它的傳回值不屬於運算式的一部分時,這個遞迴調用就是尾遞迴。尾遞迴函式的特點是在迴歸過程中不用做任何操作,這個特性很重要,因為大多數現代的編譯器會利用這種特點自動產生最佳化的代碼。原理:當編譯器檢測到一個函數調用是尾遞迴的時候,它就覆蓋當前的活躍記錄而不是在棧中去建立一個新的。編譯器可以做到這點,因