在Python中有許多編碼小技巧。有時,了解其中的一些技巧可以幫助我們減少編寫的代碼量,同時讓我們的程式看起來更加優雅簡潔。
在本文中,我将介紹我在日常工作中經常使用的5個編碼小技巧!喜歡記得收藏、關注、點贊。
【注】文末有技術交流群,同時找小助手擷取 Python 程式設計技巧指南一份。
三元表達式
三元表達式,顧名思義,是指一個包含三個部分的表達式。第一部分是一個條件,如果條件為真,則執行第二部分;否則,将執行第三部分。Python文法看起來如下:
part_2 if condition else part_3
不妨舉個栗子,代碼如下:
number = 1
parity = "even" if number % 2 == 0 else "odd"
print(parity)
# odd
上述代碼中,我們根據數字為奇偶數來對其進行指派。如果數字是偶數,我們将奇偶性指派為偶數;否則為奇數。很簡單,不是嗎?然而,請注意一件事:在第三部分或後面的内容中,我們隻需要提供配置設定給變量奇偶性的取值即可。
其實,語句_part_2 if condition else part_3_ ,實質上等價于以下代碼:
if condition:
part2 = value1
else:
part2 = value2
更加一般的是我們也可以在函數調用上使用上述三元運算,代碼如下:
def add(a,b):
return a+b
def multiply(a,b):
return a * b
a, b = 3, 5
res = (multiply if a > b else add) (a,b)
print(res)
# 8
使用with操作相關檔案
Python中的檔案操作經常需要先打開,完成操作後再進行關閉或者釋放。此外,代碼中還經常會有異常情況産生,此時我們希望使用代碼來嘗試釋放相應的資源。首先可以想到的是采用 try…finally 代碼塊來處理上述情況,代碼如下:
f = open('Hi.text', 'w')
try:
f.write('Hello, there')
finally:
f.close()
但是一種更加優雅的寫法是采用_with_關鍵字,代碼如下:
with open('Hi.text', 'w') as f:
f.write("Hello, there")
with 關鍵字是Python中上下文管理器的一個特效。上下文管理器可以讓我們在需要的時候精準地配置設定和釋放相應的資源,這意味着我們可以在使用某些資源時縮短代碼段!同時,我們還可以通過覆寫___enter__和__exit___函數來定義自己的上下文管理器!例如,我們可以在這裡定義自己的方式:
class My_file:
def __init__(self, fname):
self.fname = fname
def __enter__(self):
self.file = open(self.fname, 'w')
return self.file
def __exit__(self, exc_type, exc_val, exc_trace_back):
if self.file:
self.file.close()
相應的調用代碼如下:
with My_file('hello.txt') as f:
f.write('hello, world!')
一行中的多個比較
如果我們有一個變量 n , 我們需要檢查 n 是否在0到100之間,我們會怎麼做?
(n>0)and (n<100) ?
在Python中我們直接使用 0<n<100 就可以啦,是不是超級簡單!
for…else語句
我們最常用的是 if…else 語句,但是Python中也支援 for…else 語句,樣例代碼如下:
for i in range(0,3):
print(i)
else:
print(i)
# 0
# 1
# 2
# 2
上述代碼中,當循環執行完後,else 代碼塊将執行。for…else 語句塊可以被了解為當循環條件不滿足時,我們來處理我們需要做的事,僞代碼邏輯如下:
for i in range(n):
if condition:
you_find_your_stuff()
break
else:
you_did_not_find_your_stuff()
上述代碼中,如果條件_condition_ 滿足,此時 break 運作,這個時候 else 代碼塊将不會執行。如果條件_condition_ 不滿足,此時_else_ 代碼塊将會執行。
List生成式
清單生成式主要用于從舊資料上生成我們所需的資料清單。
一般文法如下:
用于生成數字0-9的平方的代碼如下:
square_numbers = [i*i for i in range(10)]
print(square_numbers)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
如果我們隻想處理上述清單中的奇數呢?我們的代碼可以改寫如下:
square_numbers = [i*i for i in range(10) if i % 2 == 1]
print(square_numbers)
# [1, 9, 25, 49, 81]
我們再對其進行擴充,如果對清單中的奇數計算平方運算,對偶數進行立方運算,代碼如下:
square_numbers = [i*i if i % 2 == 1 else i*i*i for i in range(10)]
print(square_numbers)
# [0, 1, 8, 9, 64, 25, 216, 49, 512, 81]
總結
本文對日常工作中經常使用到的五個Python技巧進行了總結和歸納,使用這些技巧可以減少我們的代碼量讓代碼看起來更加簡潔優雅!
推薦文章
- 李宏毅《機器學習》國語課程(2022)來了
- 有人把吳恩達老師的機器學習和深度學習做成了中文版
- 上瘾了,最近又給公司撸了一個可視化大屏(附源碼)
- 如此優雅,4款 Python 自動資料分析神器真香啊
- 梳理半月有餘,精心準備了17張知識思維導圖,這次要講清統計學
- 年終彙總:20份可視化大屏模闆,直接套用真香(文末附源碼)
技術交流
歡迎轉載、收藏、有所收獲點贊支援一下!

目前開通了技術交流群,群友已超過2000人,添加時最好的備注方式為:來源+興趣方向,友善找到志同道合的朋友
- 方式①、發送如下圖檔至微信,長按識别,背景回複:加群;
- 方式②、添加微信号:dkl88191,備注:來自CSDN
- 方式③、微信搜尋公衆号:Python學習與資料挖掘,背景回複:加群