1. 程式人生 > >程式碼這樣寫更優雅(Python 版)

程式碼這樣寫更優雅(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. 準備工