程式碼這樣寫更優雅(Python 版)
Python 這門語言最大的優點之一就是語法簡潔,好的程式碼就像虛擬碼一樣,乾淨、整潔、一目瞭然。但有時候我們寫程式碼,特別是 Python 初學者,往往還是按照其它語言的思維習慣來寫,那樣的寫法不僅執行速度慢,程式碼讀起來也費盡,給人一種拖泥帶水的感覺,過段時間連自己也讀不懂。
《計算機程式的構造和解釋》的作者哈爾·阿伯爾森曾這樣說:“Programs must be written for people to read, and only incidentally for machines to execute.”
要寫出 Pythonic(優雅的、地道的、整潔的)程式碼,還要平時多觀察那些大牛程式碼,Github 上有很多非常優秀的原始碼值得閱讀,比如:requests、flask、tornado,筆者列舉一些常見的 Pythonic 寫法,希望能給你帶來一點啟迪。
1、變數交換
大部分程式語言中交換兩個變數的值時,不得不引入一個臨時變數:
>>> a = 1
>>> b = 2
>>> tmp = a
>>> a = b
>>> b = tmp
pythonic
>>> a, b = b, a
2、迴圈遍歷區間元素
foriin[0,1,2,3,4,5]:
(printi)
# 或者
foriinrange(6):
(
printi)
pythonic
foriinxrange(6):
(printi)
xrange 返回的是生成器物件,生成器比列表更加節省記憶體,不過需要注意的是 xrange 是 python2 中的寫法,python3 只有 range 方法,特點和 xrange 是一樣的。
3、帶有索引位置的集合遍歷
遍歷集合時如果需要使用到集合的索引位置時,直接對集合迭代是沒有索引資訊的,普通的方式使用:
colors = ['red','green','blue','yellow']
foriinrange
(len(colors)):print(i,'--->',colors[i])
pythonic
fori,color inenumerate(colors):
print(i,'--->',color)
4、字串連線
字串連線時,普通的方式可以用 + 操作
names = ['raymond','rachel','matthew','roger',
'betty','melissa','judith','charlie']
s = names[0]
forname innames[1:]:
s += ', ' + name
print(s)
pythonic
print (', '.join(names))
join 是一種更加高效的字串連線方式,使用 + 操作時,每執行一次+操作就會導致在記憶體中生成一個新的字串物件,遍歷8次有8個字串生成,造成無謂的記憶體浪費。而用 join 方法整個過程只會產生一個字串物件。
5、開啟/關閉檔案
執行檔案操作時,最後一定不能忘記的操作是關閉檔案,即使報錯了也要 close。普通的方式是在 finnally 塊中顯示的呼叫 close 方法。
f = open('data.txt')
try:
data = f.read()
finally:
f.close()
一分鐘學會讀csv檔案和寫csv檔案(python實現)
import csv with open('Python-Predict/Data/train.csv') as tra: rdr = csv.reader(tra) items = list(rdr) print("rdr:",rdr) print(items)
區塊鏈學習—自己動手寫區塊鏈(Java版)
自己動手寫區塊鏈(Java版) 2018年開始區塊鏈真是火啊。一夜暴富的例子一直在傳說。今天我們就自己動手寫一個基本的區塊鏈。 先簡單的說一下區塊鏈是個什麼(相信你早就知道了)。 區塊鏈就是一個連結串列。把一堆區塊串起來就是區塊鏈。每個block有自己的數字簽名(就是一串不規則看起來
protobuf安裝使用(python版)
安裝 protobuf原始碼(各種語言實現) https://github.com/google/protobuf 我們只需要python版和protoc(編譯proto到各個語言) 1、到Python目錄,編譯 python setup.py build&
批量圖片重新命名(python版)
參考:https://blog.csdn.net/m0_37592397/article/details/80372009 # -*- coding:utf8 -*- import os class BatchRename(): """ 批量重新命名資料夾
簡單工廠模式(python版)
什麼是簡單工廠模式 工廠模式有一種非常形象的描述,建立物件的類就如一個工廠,而需要被建立的物件就是一個個產品;在工廠中加工產品,使用產品的人,不用在乎產品是如何生產出來的。從軟體開發的角度來說,這樣就有效的降低了模組之間的耦合。 簡單工廠的作用是例項化物件,而不需要客戶瞭解這個物件屬於哪個
ROS Indigo beginner_Tutorials-10 編寫 ROS 話題版的 Hello World 程式(Python版)
1. 前言 : Hello world 程式,在我們程式設計界,代表學習某種語言編寫的第一個程式。對於 ROS 機器人作業系統來說,這個 Hello World 程式就是 : 寫一個簡單的訊息釋出器(傳送) 和 訂閱器(接收)。 2. 準備工