Time of Update: 2017-01-19
雖然並非你編寫的每個 Python 程式都要求一個嚴格的效能分析,但是讓人放心的是,當問題發生的時候,Python 生態圈有各種各樣的工具可以處理這類問題。剖析器的效能可以歸結為回答四個基本問題: 正啟動並執行多快 速度瓶頸在哪裡 記憶體使用量率是多少 記憶體泄露在哪裡下面,我們將用一些神奇的工具深入到這些問題的答案中去。用 time
Time of Update: 2017-01-19
這篇文章收集了我在Python新手開發人員寫的代碼中所見到的不規範但偶爾又很微妙的問題。本文的目的是為了協助那些新手開發人員渡過寫出醜陋的Python代碼的階段。為了照顧目標讀者,本文做了一些簡化(例如:在討論迭代器的時候忽略了產生器和強大的迭代工具itertools)。對於那些新手開發人員,總有一些使用反模式的理由,我已經嘗試在可能的地方給出了這些理由。但通常這些反模式會造成代碼缺乏可讀性、更容易出bug且不符合Python的代碼風格。如果你想要尋找更多的相關介紹資料,我極力推薦The
Time of Update: 2017-01-19
執行個體的背景說明假定一個個人資訊系統,需要記錄系統中各個人的故鄉、居住地、以及到過的城市。資料庫設計如下:Models.py 內容如下: from django.db import models class Province(models.Model): name = models.CharField(max_length=10) def __unicode__(self): return self.name class City(models.Model): name =
Time of Update: 2017-01-19
1. 執行個體的背景說明假定一個個人資訊系統,需要記錄系統中各個人的故鄉、居住地、以及到過的城市。資料庫設計如下:Models.py 內容如下:from django.db import models class Province(models.Model): name = models.CharField(max_length=10) def __unicode__(self): return self.name class City(models.Model): name =
Time of Update: 2017-01-19
初試牛刀假設你希望學習Python這門語言,卻苦於找不到一個簡短而全面的入門教程。那麼本教程將花費十分鐘的時間帶你走入Python的大門。本文的內容介於教程(Toturial)和速查手冊(CheatSheet)之間,因此只會包含一些基本概念。很顯然,如果你希望真正學好一門語言,你還是需要親自動手實踐的。在此,我會假定你已經有了一定的編程基礎,因此我會跳過大部分非Python語言的相關內容。本文將高亮顯示重要的關鍵字,以便你可以很容易看到它們。另外需要注意的是,由於本教程篇幅有限,有很多內容我會直
Time of Update: 2017-01-19
這個問題是如何在一些情境下使用斷言運算式,通常會有人誤用它,所以我決定寫一篇文章來說明何時使用斷言,什麼時候不用。為那些還不清楚它的人,Python的assert是用來檢查一個條件,如果它為真,就不做任何事。如果它為假,則會拋出AssertError並且包含錯誤資訊。例如: py> x = 23py> assert x > 0, "x is not zero or negative"py> assert x%2 == 0, "x is not an even
Time of Update: 2017-01-19
首先要說的是python中的除法運算,在python 2.5版本中存在兩種除法運算,即所謂的true除法和floor除法。當使用x/y形式進行除法運算時,如果x和y都是整形,那麼運算的會對結果進行截取,取運算的整數部分,比如2/3的運算結果是0;如果x和y中有一個是浮點數,那麼會進行所謂的true除法,比如2.0/3的結果是 0.66666666666666663。另外一種除法是採用x//y的形式,那麼這裡採用的是所謂floor除法,即得到不大於結果的最大整數值,這個運算時與運算元無關的。比如2
Time of Update: 2017-01-19
假設你有一個很大的資料集,非常非常大,以至於不能全部存入記憶體。這個資料集中有重複的資料,你想找出有多少重複的資料,但資料並沒有排序,由於資料量太大所以排序是不切實際的。你如何來估計資料集中含有多少無重複的資料呢?這在許多應用中是很有用的,比如資料庫中的計劃查詢:最好的查詢計劃不僅僅取決於總共有多少資料,它也取決於它含有多少無重複的資料。在你繼續讀下去之前,我會引導你思考很多,因為今天我們要討論的演算法雖然很簡單,但極具創意,它不是這麼容易就能想出來的。一個簡單的樸素基數估計器讓我們從一個簡單的
Time of Update: 2017-01-19
Python內建的pdb庫,發現用pdb來偵錯工具還是很方便的,當然了,什麼遠端偵錯,多線程之類,pdb是搞不定的。用pdb調試有多種方式可選:1. 命令列啟動目標程式,加上-m參數,這樣調用myscript.py的話斷點就是程式的執行第一行之前複製代碼 代碼如下:python -m pdb myscript.py2. 在Python互動環境中啟用調試複製代碼 代碼如下:>>> import pdb>>> import mymodule>>>
Time of Update: 2017-01-19
你曾經想知道電腦是如何工作的嗎?儘管我們不能在一篇文章裡面教會你所有的東西,但是可以通過學習如何寫出你自己的程式來獲得一個良好的開端。在這篇Python教程中,你將會學到電腦編程的基礎知識,使用對新手來說最棒的程式設計語言之一。什麼是編程?儘可能簡單的講,編程是編寫代碼,命令電腦去完成某項任務的藝術。這裡講的某項任務,可以是簡單的兩數相加,或是像把飛船送入軌道這樣的複雜任務!一個程式裡面,最小的組成部分被稱作語句(statement)——代表了對電腦做出的一條指令。當你完成了自己的程
Time of Update: 2017-01-19
簡介這是一篇有關如何將大量的資料放入有限的記憶體中的簡略教程。與客戶工作時,有時會發現他們的資料庫實際上只是一個csv或Excel檔案倉庫,你只能將就著用,經常需要在不更新他們的資料倉儲的情況下完成工作。大部分情況下,如果將這些檔案儲存體在一個簡單的資料庫架構中或許更好,但時間可能不允許。這種方法對時間、機器硬體和所處環境都有要求。下面介紹一個很好的例子:假設有一堆表格(沒有使用Neo4j、MongoDB或其他類型的資料庫,僅僅使用csvs、tsvs等格式儲存的表格),如果將所有表格組合在一起,
Time of Update: 2017-01-19
本文執行個體講述了python串連遠程ftp伺服器並列出目錄下檔案的方法。分享給大家供大家參考。具體如下:這段python代碼用到了pysftp模組,使用sftp協議,對資料進行加密傳輸import pysftpsrv = pysftp.Connection(host="your_FTP_server", username="your_username",password="your_password")# Get the directory and file listingdata =
Time of Update: 2017-01-19
我最近在參與Python位元組碼相關的工作,想與大家分享一些這方面的經驗。更準確的說,我正在參與2.6到2.7版本的CPython解譯器位元組碼的工作。Python是一門動態語言,在命令列工具下運行時,本質上執行了下面的步驟: 當第一次執行到一段代碼時,這段代碼會被編譯(如,作為一個模組載入,或者直接執行)。根據作業系統的不同,這一步產生尾碼名是pyc或者pyo的二進位檔案。
Time of Update: 2017-01-19
在Python中有一些內建的資料類型,比如int, str, list, tuple, dict等。Python的collections模組在這些內建資料類型的基礎上,提供了幾個額外的資料類型:namedtuple, defaultdict, deque, Counter, OrderedDict等,其中defaultdict和namedtuple是兩個很實用的擴充類型。defaultdict繼承自dict,namedtuple繼承自tuple。一、defaultdict 1.
Time of Update: 2017-01-19
Python擁有著極其豐富且穩定的資料科學工具環境。遺憾的是,對不瞭解的人來說這個環境猶如叢林一般(cue snake
Time of Update: 2017-01-19
我一輩子都在寫代碼,但從來沒有掌握編碼的精髓。大部分情況下使用Visual Basic,因為我用VB最舒服。同時還略微瞭解一點其他語言(R、C、JavaScript、Applescript、Hypertext和1979年學習的BASIC)。幾年前,我決定只用Python,以此來提高我的編碼能力。在此過程中重複發明了許多輪子,但我並不介意,因為我享受解決問題的樂趣。同時有時能發現更有效、Python式的解決方案。時間長了以後,會有頓悟的時刻,意識到根本沒必要用困難且冗長的方式處理問題。下面列出10
Time of Update: 2017-01-19
在這篇文章裡,我們將會探索如何使用Python語言作為一個工具來檢測Linux系統各種運行資訊。讓我們一起來學習吧。哪種Python?當我提到Python時,我一般是指CPython 2(準確來說是2.7)。當同樣的代碼不能在CPython3(3.3)運行時,我們明確地把它指出並給出替代的代碼,解釋它們之間的不同點。請確保你已經安裝了CPython,在終端輸入python或者python3你會看到Python提示符出現在你的終端裡。請注意,所有的指令碼程式都會以#!/usr/bin/env
Time of Update: 2017-01-19
引言本文的目的,是向您展示如何使用pandas 來執行一些常見的Excel任務。有些例子比較瑣碎,但我覺得展示這些簡單的東西與那些你可以在其他地方找到的複雜功能同等重要。作為額外的福利,我將會進行一些模糊字串匹配,以此來展示一些小花樣,以及展示pandas是如何利用完整的Python模組系統去做一些在Python中是簡單,但在Excel中卻很複雜的事情的。有道理吧?讓我們開始吧。為某行添加求和項我要介紹的第一項任務是把某幾列相加然後添加一個總和欄。首先我們將excel 資料
Time of Update: 2017-01-19
1 平方列表如果你想建立一個包含1到10的平方的列表,你可以這樣做:squares = []for x in range(10): squares.append(x**2) 這是一個簡單的例子,但是使用列表產生式可以更簡潔地建立這個列表。squares = [x**2 for x in range(10)]這個最簡單的列表產生式由方括弧開始,方括弧內部先是一個運算式,其後跟著一個for語句。列表產生式總是返回一個列表。2 整除3的數字列表通常,你可能這樣寫:numbers =
Time of Update: 2017-01-19
它是什嗎? >>> type(NotImplemented)<type 'NotImplementedType'>NotImplemented 是Python在內建命名空間中的六個常數之一。其他有False、True、None、Ellipsis 和 __debug__。和 Ellipsis很像,NotImplemented 能被重新賦值(覆蓋)。對它賦值,甚至改變屬性名稱, 不會產生