平時是否思考過如何編寫乾淨的 Python 程式碼嗎?
今天我將給大家分享五個技巧,確保你的程式碼正常工作、易於閱讀並充分利用 Python 提供的功能模組。
使用易於記憶的變數名
通常在程式設計時,我們不會停下來考慮一個易於閱讀、發音和記憶的描述性變數名稱。這是一個不好的做法,因為我們將在不考慮描述性變數名稱時節省的時間,我們將在未來花費它來嘗試理解該變數應該做什麼。
❌Bad way
from datetime import date
ymdstr = date.now().isoformat()
✅Good way
from datetime import date
currentDate = date.now().isoformat()
哪個更好地描述了變數的功能?ymdstr 還是 currentDate?
在宣告變數併為它選擇一個好名字時,最好多花幾秒鐘,而不是在未來浪費兩倍(或三倍)的時間試圖理解它的功能是什麼。
建立易於搜尋的變數名稱
每個程式設計師都應該知道的一件事是,在我們的程式設計生涯中,我們將花費更多的時間閱讀程式碼並嘗試理解它,而不是編寫它。
❌Bad way
# What the h*ck is 420 for?
result = serializer.serialize(data, 420)
✅Good way
json = serializer.serialize(data, sort_keys=True, indent=4)
如果我們停下來閱讀兩個程式碼摘錄(好的和壞的),我們會意識到在壞程式碼摘錄之前快速理解好的程式碼摘錄要容易得多。
使用具有高度描述性的名稱
當你將函式作為引數送給另一個函式時,它導致的唯一原因是我們無法正確遵循程式碼並且我們很難理解它的作用。
❌Bad way
import re
address = 'S Grand Ave, LA 90013'
city_zip_code_regex = re.compile("^[^,]+,\s*(.+?)\s*(\d{5})$")
matches = city_zip_code_regex.match(address)
save_city_zip_code(matches.group(1), matches.group(2))
✅Good way
address = 'S Grand Ave, LA 90013'
city_zip_code_regex = re.compile("^[^,]+,\s*(?P<city>.+?)\s*(?P<zipcode>\d{5})$")
matches = city_zip_code_regex.match(address)
save_city_zip_code(matches.group('city'), matches.group('zipcode'))
透過這個例子,我們可以看到如何透過命名子模式來減少正則表示式的依賴。這使得程式碼更容易閱讀和理解。
不要過度使用 if-else
很多時候,我們並沒有過多考慮未來,在某些時候我們可能不得不修改程式碼,所以我們儘量不要濫用 if-else。if-else巢狀越多,程式碼就越難理解。
❌Bad way
def is_shop_open(day: str):
if day:
day = day.lower()
if day == ‘friday’:
return True
elif day == ‘saturday’:
return True
elif day == ‘sunday’:
return True
else:
return False
else:
return False
✅Good way
def is_shop_open(day: str):
for open_day in ['friday','saturday','sunday']:
if day == open_day:
return True
return False
看看這個例子有多幹淨。行數更少,更容易理解。記住:顯式優於隱式。
不要新增不必要的上下文
這個小的技巧是基於”不要重複自己”。如果你擁有的任何類或物件的名稱已經描述了某些內容或提供了有關其功能的明確資訊,那麼在變數名稱中重複自己是不好的。
❌Bad way
class Car: carMake = ‘’
carModle = ‘’
carColor = ‘’
#…
}
✅Good way
class Car:
make = ‘’
modle = ‘’
color = ‘’
#…
透過這種方式,我們不會重複汽車,因為它過於重複,並沒有真正為我們增加價值。記住,越簡單越好。
總結
如何編寫更簡潔、更高效的 Python 程式碼不僅考驗一個人的編碼內功,更能讓閱讀程式碼的人容易理解,提升工作效率。
文章來源於:Python學習與資料探勘
文章連結:https://mp.weixin.qq.com/s/uCLcEe8sXoFW-2wGj6meTA
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
我是「数据分析那些事」。常年分享数据分析干货,不定期分享好用的职场技能工具。各位也可以关注我的Facebook,按赞我的脸书并私讯「10」,送你十周入门数据分析电子书唷!期待你与我互动起来~