Time of Update: 2016-11-07
標籤:python 上下文 Python裡面有個特殊的模組叫做上下文模組,可以和with搭配來實現一些功能。他的執行方式是使用者需要一個定義一個產生器的函數;with後面跟這個函數,他會執行yield之前的代碼;然後跳出來,執行with語句下面的代碼,然後再切換回函數,執行finally後面的代碼。比如import contextlib@contextlib.contextmanagerdef worker_
Time of Update: 2016-11-07
標籤:add create created john span bsp code 物件導向 核心編程 Python並不強求你以物件導向的方式編程(與Java不同) #
Time of Update: 2016-11-07
在liunx系統中要想每隔一分鐘執行一個命令,最普遍的方法就是crontab了,如果不想使用crontab,經同事指點在程式中可以用定時器實現這種功能,於是就開始摸索了,發現需要一些訊號的知識...查看你的linux支援哪些訊號:kill -l 即可root@server:~# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS
Time of Update: 2016-11-07
為防止兩個模組互相匯入的問題,Python預設所有的模組都只匯入一次,如果需要重新匯入模組,Python2.7可以直接用reload(),Python3可以用下面幾種方法:方法一:基本方法from imp import reloadreload(module)方法二:按照套路,可以這樣import impimp.reload(module)方法三:看看imp.py,有發現,所以還可以這樣import
Time of Update: 2016-11-07
引用計數Python預設的垃圾收集機制是“引用計數”,每個對象維護了一個ob_ref欄位。它的優點是機制簡單,當新的引用指向該對象時,引用計數加1,當一個對象的引用被銷毀時減1,一旦對象的引用計數為0,該對象立即被回收,所佔用的記憶體將被釋放。它的缺點是需要額外的空間維護引用計數,不過最主要的問題是它不能解決“循環參考”。什麼是循環參考?A和B相互引用而再沒有外部參考A與B中的任何一個,它們的引用計數雖然都為1,但顯然應該被回收,例子: a = { } # a 的引用為 1 b = { }
Time of Update: 2016-11-07
Python隨機產生驗證碼的方法有很多,今天給大家列舉兩種,大家也可以在這個基礎上進行改造,設計出適合自己的驗證碼方法方法一:利用range方法,對於range方法不清楚的同學,請參考文章《python開發的range()函數》# -*- coding: utf-8 -*-import randomdef generate_verification_code(len=6): ''' 隨機產生6位的驗證碼 ''' # 注意:
Time of Update: 2016-11-07
最近使用Python的過程中遇到了一些坑,例如用datetime.datetime.now()這個可變對象作為函數的預設參數,模組循環相依性等等。在此記錄一下,方便以後查詢和補充。避免可變對象作為預設參數在使用函數的過程中,經常會涉及預設參數。在Python中,當使用可變對象作為預設參數的時候,就可能產生非預期的結果。下面看一個例子:def append_item(a = 1, b = []): b.append(a) print b
Time of Update: 2016-11-07
在開發上傳服務時,經常需要對上傳的檔案進行過濾。本文為大家提供了python通過檔案頭判斷檔案類型的方法,非常實用。代碼如下import struct # 支援檔案類型 # 用16進位字串的目的是可以知道檔案頭是多少位元組 # 各種檔案頭的長度不一樣,少半2字元,長則8字元 def typeList(): return { "52617221": EXT_RAR, "504B0304": EXT_ZIP} # 位元組碼轉16進位字串 def
Time of Update: 2016-11-07
在 Python 整型對象所儲存的位置是不同的, 有一些是預先分配記憶體的,它一直儲存在記憶體裡面, 而其它的, 則在使用時開闢出空間.說這句話的理由, 可以看看如下代碼: a = 5b = 5a is b # Truea = 500b = 500a is b # False由上面的代碼可知, 整型 5 是一直存在的, 而整型 500 不是一直存在的.那麼有哪些整數是預先分配記憶體位址的呢?a, b, c = 0, 0, 0i = 0while a is b: i += 1 a,
Time of Update: 2016-11-07
首先,我們用webpy寫一個簡單的網站,監聽8080連接埠,返回“Hello, EverET.org”的頁面。然後我們使用我們的forwarding.py,在80連接埠和8080連接埠中間建立兩條通訊管道用於雙向通訊。此時,我們通過80連接埠訪問我們的伺服器。瀏覽器得到:然後,我們在forwarding.py的輸出結果中可以看到瀏覽器和webpy之間的通訊內容。代碼:#!/usr/bin/env pythonimport sys, socket, time, threadingloglock =
Time of Update: 2016-11-07
如果你想把Python嵌入C/C++中是比較簡單的事情,你需要的是在VC中添加Python的include檔案目錄和lib檔案目錄。下面我們來看下如何把Python嵌入C/C++中。VC6.0下,開啟 tools->options->directories->show directories for,將Python安裝目錄下的inlude目錄添加到inlude files項中,將libs目錄添加到library files項中。VC2005下,開啟tools->options->項目和解決方案-
Time of Update: 2016-11-07
tornado版本: start_app.pyJava代碼 # coding:gbk import tornado.web import tornado.wsgi import wsgiref.simple_server import sys import for_rmzx reload(sys) sys.setdefaultencoding('gbk') class
Time of Update: 2016-11-07
進程與線程的曆史我們都知道電腦是由硬體和軟體組成的。硬體中的CPU是電腦的核心,它承擔電腦的所有任務。 作業系統是運行在硬體之上的軟體,是電腦的管理者,它負責資源的管理和分配、任務的調度。 程式是運行在系統上的具有某種功能的軟體,比如說瀏覽器,音樂播放器等。 每次執行程式的時候,都會完成一定的功能,比如說瀏覽器幫我們開啟網頁,為了保證其獨立性,就需要一個專門的管理和控制執行程式的資料結構——進程式控制制塊。 進程就是一個程式在一個資料集上的一次動態執行過程。
Time of Update: 2016-11-07
在Python 中,and 和 or 執行布爾邏輯演算,如你所期待的一樣,但是它們並不返回布爾值;而是,返回它們實際進行比較的值之一。一、and:>>> 'a' and 'b''b'>>> '' and 'b'''>>> 'a' and 'b' and
Time of Update: 2016-11-07
*args表示任何多個無名參數,它是一個tuple;**kwargs表示關鍵字參數,它是一個dict。 def fun(*args, **kwargs): print 'args = ', args print 'kwargs = ', kwargs print '###'if __name__ == '__main__': foo(1,2,3,4) foo(a=1,b=2,c=3) foo(
Time of Update: 2016-11-07
我們可以通過列表產生式簡單直接地建立一個列表,但是受到記憶體限制,列表容量肯定是有限的。而且,建立一個包含100萬個元素的列表,不僅佔用很大的儲存空間,而且如果我們僅僅需要訪問前面幾個元素,那後面絕大多數元素佔用的空間都白白浪費了。所以,如果列表元素可以按照某種演算法推算出來,那我們是否可以在迴圈的過程中不斷推算出後續的元素呢?這樣就不必建立完整的list,從而節省大量的空間。在Python中,這種一邊迴圈一邊計算的機制,稱為產生器(Generator)。要建立一個generator,有很多種方
Time of Update: 2016-11-07
代理類型(proxy):透明代理 匿名代理 混淆代理和高匿代理. 這裡寫一些python爬蟲使用代理的知識, 還有一個代理池的類. 方便大家應對工作中各種複雜的抓取問題。urllib 模組使用代理urllib/urllib2使用代理比較麻煩, 需要先構建一個ProxyHandler的類, 隨後將該類用於構建網頁開啟的opener的類,再在request中安裝該opener.代理格式是"http://127.0.0.1:80",如果要帳號密碼是"http://user:password@127.0
Time of Update: 2016-11-07
當我們用open()函數去開啟檔案的時候,有好幾種開啟的模式。'r'->唯讀'w'->唯寫,檔案已存在則清空,不存在則建立。'a'->追加,寫到檔案末尾'b'->二進位模式,比如開啟映像、音頻、word檔案。'+'->更新(可讀可寫)這個帶'+'號的有點難以理解,上代碼感受下。with open('foo.txt', 'w+') as f: f.write(
Time of Update: 2016-11-07
cookielib是一個自動處理cookies的模組,如果我們在使用爬蟲等技術的時候需要儲存cookie,那麼cookielib會讓你事半功倍!他最常見的搭檔模組就是python下的urllib和request。核心類1.Cookie該類實現了Netscape and RFC 2965 cookies定義的cookie標準,基本可以理解為某一條cookie資料。部分代碼如下,很多屬性是不是很眼熟? self.domain_initial_dot = domain_initial_dot
Time of Update: 2016-11-07
自python2.6開始,新增了一種格式化字串的函數str.format(),可謂威力十足。那麼,他跟之前的%型格式化字串相比,有什麼優越的存在呢?讓我們來揭開它羞答答的面紗。文法它通過{}和:來代替%位置方法格式化>>> '{}.{}'.format('pythontab', 'com')'pythontab.com'>>> '{}.{}.{}'.format('www',