1. 程式人生 > >python實驗隨手小筆記(一)

python實驗隨手小筆記(一)

1.eval(expression, globals=None, locals=None)  

—— 將字串str當成有效的表示式來求值並返回計算結果。

globals和locals引數是可選的,如果提供了globals引數,那麼它必須是dictionary型別;如果提供了locals引數,那麼它可以是任意的map物件。

2.isinstance() 函式

——判斷一個物件是否是一個已知的型別,類似 type()。

isinstance() 與 type() 區別:

  • type() 不會認為子類是一種父類型別,不考慮繼承關係。

  • isinstance() 會認為子類是一種父類型別,考慮繼承關係。

如果要判斷兩個型別是否相同推薦使用 isinstance()。

3.sys是python自帶模組。利用 import 語句輸入sys 模組。

當執行import sys後, python在 sys.path 變數中所列目錄中尋找 sys 模組檔案。然後執行這個模組的主塊中的語句進行初始化,然後就可以使用模組了 。

sys模組的常見函式列表

  • sys.argv: 實現從程式外部向程式傳遞引數。

  • sys.exit([arg]): 程式中間的退出,arg=0為正常退出。

  • sys.getdefaultencoding(): 獲取系統當前編碼,一般預設為ascii。

  • sys.setdefaultencoding(): 設定系統預設編碼,執行dir(sys)時不會看到這個方法,在直譯器中執行不通過,可以先執行reload(sys),在執行 setdefaultencoding('utf8'),此時將系統預設編碼設定為utf8。(見設定系統預設編碼 )

  • sys.getfilesystemencoding(): 獲取檔案系統使用編碼方式,Windows下返回'mbcs',mac下返回'utf-8'.

  • sys.path: 獲取指定模組搜尋路徑的字串集合,可以將寫好的模組放在得到的某個路徑下,就可以在程式中import時正確找到。

  • sys.platform

    : 獲取當前系統平臺。

  • sys.stdin,sys.stdout,sys.stderr: stdin , stdout , 以及stderr 變數包含與標準I/O 流對應的流物件. 如果需要更好地控制輸出,而print 不能滿足你的要求, 它們就是你所需要的. 你也可以替換它們, 這時候你就可以重定向輸出和輸入到其它裝置( device ), 或者以非標準的方式處理它們。 

4. Python.append()與Python.expand()

alist=[1,2] >>>[1,2] alist.append([3,4]) >>>[1, 2, [3, 4]] alist.extend([3,4]) >>>[1, 2, 3, 4] 結論: list.append(arg1) 引數型別任意,可以往已有列表中新增元素,若新增的是列表,就該列表被當成一個元素存在原列表中,只使list長度增加1.

list.extend(list1) 引數必須是列表型別,可以將引數中的列表合併到原列表的末尾,使原來的 list長度增加len(list1)。

5.pip和conda區別

anaconda指的是一個開源的Python發行版本,其包含了conda、Python等180多個科學包及其依賴項。軟體發行版是在系統上提前編譯和配置好的軟體包集合, 裝好了後就可以直接用。

Conda是一個包管理器

包管理器是自動化軟體安裝,更新,解除安裝的一種工具。Conda,有命令”conda install”, “conda update”, “conda remove”。conda旨在管理任何軟體堆疊中的包和依賴關係,conda不侷限於python,在這個意義上更像是apt或yum等跨平臺版本。

Pip代表Pip Installs Packages

是Python的官方認可的包管理器,最常用於安裝在Python包索引(PyPI)上釋出的包。 pip和PyPI都由Python包裝管理局(PyPA)管理和支援。

兩者區別

簡而言之,pip是Python包的通用管理器; conda是一個與語言無關的跨平臺環境管理器。

1.conda和pip服務不同的受眾和不同的目的。

pip可以允許你在任何環境中安裝python包,而conda允許你在conda環境中安裝任何語言包(包括c語言或者python)。即pip在任何環境中安裝python包; conda安裝在conda環境中的任何包裝。例如:如果你想在現有的系統Python安裝中管理Python包,conda不能幫助你,通過設計,它只能在conda環境中安裝包。 如果你想說,使用依賴於外部依賴的許多Python包(NumPy,SciPy和Matplotlib是常見的例子),同時以一種有意義的方式跟蹤這些依賴,pip不能幫助你,它管理Python包和只有Python包。

2.pip是從PyPI上直接下載,他僅僅是簡單地下載而已,不能包含某些包必要的依賴檔案。Conda沒有語言限制,可以構建和管理任何語言的任何型別的軟體,這其中也包括Python。

Anaconda和Miniconda

Anaconda是一個打包的集合,裡面預裝好了conda、某個版本的python、眾多packages、科學計算工具等等,就是把很多常用的不常用的庫都給你裝好了。

Miniconda,顧名思義,它只包含最基本的內容——python與conda,以及相關的必須依賴項,對於空間要求嚴格的使用者,Miniconda是一種選擇。就只包含最基本的東西,其他的庫得自己裝。

6.python內建模組(module)和第三方庫(library)

Python中,一些常見的內建模組(標準庫):

Python標準庫的主要功能有:
1.文字處理,包含文字格式化、正則表示式匹配、文字差異計算與合併、Unicode支援,二進位制資料處理等功能
2.檔案處理,包含檔案操作、建立臨時檔案、檔案壓縮與歸檔、操作配置檔案等功能
3.作業系統功能,包含執行緒與程序支援、IO複用、日期與時間處理、呼叫系統函式、日誌(logging)等功能
4.網路通訊,包含網路套接字,SSL加密通訊、非同步網路通訊等功能
5.網路協議,支援HTTP,FTP,SMTP,POP,IMAP,NNTP,XMLRPC等多種網路協議,並提供了編寫網路伺服器的框架
6.W3C格式支援,包含HTML,SGML,XML的處理。
7.其它功能,包括國際化支援、數學運算、HASH、Tkinter等

著名第三方庫

1.Web框架 Django:    開源Web開發框架,它鼓勵快速開發,並遵循MVC設計,開發週期短。 ActiveGrid:    企業級的Web2.0解決方案。 Karrigell:    簡單的Web框架,自身包含了Web服務,py指令碼引擎和純python的資料庫PyDBLite。 Tornado:    一個輕量級的Web框架,內建非阻塞式伺服器,而且速度相當快 webpy:    一個小巧靈活的Web框架,雖然簡單但是功能強大。 CherryPy:    基於Python的Web應用程式開發框架。 Pylons:    基於Python的一個極其高效和可靠的Web開發框架。 Zope:    開源的Web應用伺服器。 TurboGears:    基於Python的MVC風格的Web應用程式框架。 Twisted:    流行的網路程式設計庫,大型Web框架。 Quixote:    Web開發框架。

2.科學計算 Matplotlib:    用Python實現的類matlab的第三方庫,用以繪製一些高質量的數學二維圖形。 SciPy:    基於Python的matlab實現,旨在實現matlab的所有功能。 NumPy:    基於Python的科學計算第三方庫,提供了矩陣,線性代數,傅立葉變換等等的解決方案。

3.GUI PyGtk:    基於Python的GUI程式開發GTK+庫。 PyQt:    用於Python的QT開發庫。 WxPython:    Python下的GUI程式設計框架,與MFC的架構相似。

4.其它 BeautifulSoup:    基於Python的HTML/XML解析器,簡單易用。 PIL:    基於Python的影象處理庫,功能強大,對圖形檔案的格式支援廣泛。 PyGame:    基於Python的多媒體開發和遊戲軟體開發模組。 Py2exe:    將python指令碼轉換為windows上可以獨立執行的可執行程式。