每日10行程式碼52:編寫高質量python程式碼方法4——用輔助函式來取代複雜的表示式
今天看了effective python第4條,有所啟發。
from urllib.parse import parse_qs
# 要從url中解碼查詢字串,在下例中,每個參數列示一個整數值:
my_values = parse_qs('red=5&blue=0&green=',keep_blank_values=True)
print(my_values)
print(repr(my_values))
print('Red: ',my_values.get('red'))
print('Green: ',my_values.get('green'))
print('Opacity:',my_values.get('opacity'))
#如果有一個需求要實現,當引數返回空白時或者沒有傳此引數時能夠返回預設值0,那麼可以如下實現
#實現原理: 如果or操作符左側的子表示式估值為False,那麼整個表示式的值就是or操作右側那個子表示式的值
red = my_values.get('red', [''])[0] or 0
green = my_values.get('green', [''])[0] or 0
opacity = my_values.get('opacity', [''])[0] or 0
print('Red: %r' % red)
print('Green: %r' % green)
print('Opacity: %r' % opacity)
#假如所需的引數值是數字,上面的的表示式還要換一下
red = int(my_values.get('red', [''])[0] or 0) # 這個表示式就很複雜了
# 如果用上三元操作符,可以如下寫:
red = my_values.get('red', [''])
red = int(red[0]) if red[0] else 0 # 還是不夠簡單
# 更好的方法是使用函式,如果需要頻繁使用這種邏輯,那麼更應該用函式
def get_first_int(values, key, default=0):
found = values.get(key, [''])
if found[0]:
found = int(found[0])
else:
found = default
return found
red = get_first_int(my_values, 'red')
print(red)
要點:
- 開發者很容易過度運用python的語法特性,從而寫出那種特別複雜並且難以理解的單行表示式。
- 請把複雜的表示式移入輔助函式之中,如果要反覆使用相同的邏輯,那就更應該這麼做。
- 使用if/else表示式(三元操作符),要比用or或and 這樣的boolean操作符寫成的表示式更加清晰。
相關文章
- 高質量的程式碼 - 函式(1)函式
- 如何編寫高質量的函式 -- 敲山震虎篇函式
- 《Effective JavaScript 編寫高質量JavaScript程式碼的68個有效方法》JavaScript
- 如何編寫高質量的C#程式碼(一)C#
- iOS 編寫高質量Objective-C程式碼iOSObjectC程式
- 乾淨的程式碼: 編寫可讀的函式函式
- 🐒編寫高質量程式碼(手撕程式碼)
- 如何編寫高質量的 JS 函式(1) -- 敲山震虎篇JS函式
- iOS編寫高質量Objective-C程式碼(六)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(七)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(八)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(六)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(五)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(一)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(二)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(四)iOSObjectC程式
- iOS編寫高質量Objective-C程式碼(四)iOSObjectC程式
- iOS編寫高質量Objective-C程式碼(二)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(三)iOSObjectC程式
- 編寫高質量程式碼 改善Python程式的91個建議Python
- 消除程式碼中的壞味道,編寫高質量程式碼
- 如何編寫高質量的 JS 函式(3) --函數語言程式設計[理論篇]JS函式函數程式設計
- 藉助Python 函式進行模組化程式碼Python函式
- 我們應該如何編寫高質量的前端程式碼前端
- 編寫高質量箭頭函式的5個最佳做法函式
- 何為程式碼質量?——用腦子寫程式碼
- 感悟篇:如何寫好函式式程式碼函式
- 表示式樹,一種提高程式碼複用性的方式
- Laravel 輔助函式Laravel函式
- 編寫高質量的js之正確理解正規表示式回溯JS
- vuex 原始碼:深入 vuex 之輔助函式 mapStateVue原始碼函式
- 如何編寫高質量的函式 -- 命名/註釋/魯棒篇函式
- iOS 編寫高質量Objective-C程式碼(一)—— 簡介iOSObjectC程式
- 使用chatgt(GPT-4)將過程式(的java程式碼)改成函式式(的elixir程式碼)GPTJava函式
- 一篇文章拿下《Effective Objective C 2 0編寫高質量iOS與OS X程式碼的52個有效方法》ObjectiOS
- 編寫靈活、穩定、高質量的HTML程式碼的規範HTML
- 編寫靈活、穩定、高質量的CSS程式碼的規範CSS
- 編寫高質量程式碼的十個祕訣