Python開發的10個小貼士

2021-08-19 12:45:53 字數 3641 閱讀 5608

[[0], [0], [0], [0], [0]]

bag_of_bags[0][0] = 1

[[1], [0], [0], [0], [0]]

同時記住:

「過早優化是萬惡之源」

問問自己,初始化乙個列表是必須的嗎?

5. 構造字串

你會經常需要列印字串。要是有很多變數,避免下面這樣:

name = 「raymond」

age = 22

born_in = 「oakland, ca」

string = 「hello my name is 」 + name + 「and i』m 」 + str(age) + 」 years old. i was born in 」 + born_in + 「.」

print(string)

額,這看起來多亂呀?你可以用個漂亮簡潔的方法來代替,.format。

這樣做:

name = 「raymond」

age = 22

born_in = 「oakland, ca」

string = 「hello my name is and i』m years old. i was born in .」.format(name, age, born_in)

print(string)

好多了!

6. 返回tuples(元組)

python允許你在乙個函式中返回多個元素,這讓生活更簡單。但是在解包元組的時候出出線這樣的常見錯誤:

def binary():

return 0, 1

result = binary()

zero = result[0]

one = result[1]

這是沒必要的,你完全可以換成這樣:

def binary():

return 0, 1

zero, one = binary()

要是你需要所有的元素被返回,用個下劃線_:

zero, _ = binary()

就是這麼高效率!

7. 訪問dicts(字典)

你也會經常給dicts中寫入key,pair(鍵,值)。

如果你試圖訪問乙個不存在的於dict的key,可能會為了避免keyerror錯誤,你會傾向於這樣做:

countr = {}

bag = [2, 3, 1, 2, 5, 6, 7, 9, 2, 7]

for i in bag:

if i in countr:

countr[i] += 1

else:

countr[i] = 1

for i in range(10):

if i in countr:

print(「count of {}: {}」.format(i, countr[i]))

else:

print(「count of {}: {}」.format(i, 0))

但是,用get()是個更好的辦法。

countr = {}

bag = [2, 3, 1, 2, 5, 6, 7, 9, 2, 7]

for i in bag:

countr[i] = countr.get(i, 0) + 1

for i in range(10):

print(「count of {}: {}」.format(i, countr.get(i, 0)))

當然你也可以用setdefault來代替。

這還用乙個更簡單卻多費點開銷的辦法:

bag = [2, 3, 1, 2, 5, 6, 7, 9, 2, 7]

countr = dict([(num, bag.count(num)) for num in bag])

for i in range(10):

print(「count of {}: {}」.format(i, countr.get(i, 0)))

你也可以用dict推導式。

countr =

這兩種方法開銷大是因為它們在每次count被呼叫時都會對列表遍歷。

8 使用庫

現有的庫只需匯入你就可以做你真正想做的了。

還是說前面的例子,我們建乙個函式來數乙個數字在列表中出現的次數。那麼,已經有乙個庫就可以做這樣的事情。

from collections import counter

bag = [2, 3, 1, 2, 5, 6, 7, 9, 2, 7]

countr = counter(bag)

for i in range(10):

print(「count of {}: {}」.format(i, countr[i]))

一些用庫的理由:

· **是正確而且經過測試的。

· ·

它們的演算法可能會是最優的,這樣就跑的更快。

· ·

抽象化:它們指向明確而且文件友好,你可以專注於那些還沒有被實現的。

· ·

最後,它都已經在那兒了,你不用再造輪子了。

· 9. 在列表中切片/步進

你可以指定start的點和stop點,就像這樣list[start:stop:step]。我們取出列表中的前5個元素:

bag = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

for elem in bag[:5]:

print(elem)

這就是切片,我們指定stop點是5,再停止前就會從列表中取出5個元素。

要是最後5個元素怎麼做?

bag = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

for elem in bag[-5:]:

print(elem)

沒看明白嗎?-5意味著從列表的結尾取出5個元素。

如果你想對列表中元素間隔操作,你可能會這樣做:

bag = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

for index, elem in enumerate(bag):

if index % 2 == 0:

print(elem)

但是你應該這樣來做:

bag = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

for elem in bag[::2]:

print(elem)

或者用 ranges

bag = list(range(0,10,2))

print(bag)

這就是列表中的步進。list[::2]意思是遍歷列表同時兩步取出乙個元素。

你可以用list[::-1]很酷的翻轉列表。

10. tab鍵還是空格鍵

長時間來看,將tab和空格混在一起會造成災難,你會看到indentationerror: unexpected indent。不管你選擇tab鍵還是空格鍵,你應該在你的檔案和專案中一直保持使用。

乙個使用空格而不是tab的原因是,tab不是在所有編輯器中都一樣的。視呢所用的編輯器,tab可能會被當作2到8個空格。

你也可以在寫**時用空格來定義tab。這樣你可以自己選擇用幾個空格來當做tab。大多數python使用者是用4個空格。

10個用於Web開發的最好 Python 框架

python 是一門動態 物件導向語言。其最初就是作為一門物件導向語言設計的,並且在後期又加入了一些更高階的特性。除了語言本身的設計目的之外,python標準 庫也是值得大家稱讚的,python甚至還自帶伺服器。其它方面,python擁有足夠多的免費資料函式庫 免費的web網頁模板系統 還有與web...

我的10個開發原則

0.客戶至上 如果我們沒有關注客戶 其他人將會取代我們。從客戶的角度出發,客戶首先會把焦點集中在產品開發的真正價值,其他方面 例如概念 需求 技術等等 在專案中是次要的。不關注客戶,就是程式設計師常犯的5個非技術性錯誤的其中之一。1.質量 即使 質量是一些非常主觀性的東西,甚至有人說所有的 都有問題...

10個VisualStudio原生開發的除錯技巧

英文原文 10 morevisual studio debugging tips for native development 我最近遇到了一篇 ivan shcherbakov 寫的名為 10 個關於 visual studio 的強大除錯技巧的文章。然而這篇文章只是提供了一些相對基本的關於 vi...