13個可能未使用過的Python特性
大多數程序員不知道的令人難以置信的功能列表。
Python 是頂級編程語言之一,它具有許多程序員從未使用過的許多隱藏功能。在這篇文章中,我將分享你可能從未使用過的13 個 Python 特性。
1.列表Stepping
這是一個 step 參數,可以通過采取幾個步驟來分割你的列表。此外,你可以使用 step 參數來反轉整數。看看下面的代碼示例:
#?列表Stepping
data?=?[10,?20,?30,?40,?50]
print(data[::2])?#?[10,?30,?50]
print(data[::3])?#?[10,?40]
#?使用?stepping?翻轉列表
print(data[::-1])?#?[50,?40,?30,?20,?10]
2.find() 方法
find() 方法是一個很棒的功能,可以查找字符串中任何字符的任何起始索引號:
#?查找方法
x?=?"Python"
y?=?"Hello?From?Python"
print(x.find("Python"))?#?0
print(y.find("From"))??#?6
print(y.find("From?Python"))?#6
3.iter()函數
iter() 方法對于沒有任何循環幫助的迭代列表很有用。這是一個內置方法,因此你不需要任何模塊:
#?Iter()?
values?=?[1,?3,?4,?6]
values?=?iter(values)?
print(next(values))?#?1?
print(next(values))?#?3?
print(next(values))?#?4?
print(next(values))?#?6
4.Python 中的文檔測試
Doctest 功能將讓你測試你的功能并顯示你的測試報告。如果你檢查下面的示例,你需要在三引號中編寫一個測試參數,如下所示:
#?Doctest?
from?doctest?import?testmod?
def?Mul(x,?y)?->?int:?
???"""
???這個函數返回?x?和?y?參數的?mul
???調用函數,然后是預期的輸出:
???>>>?Mul(4,?5)?
???20?
???>>?>?Mul(19,?20)?
???39?
???"""?
???return?x?*?y?
#?調用?testmod?函數
testmod(name='Mul',?verbose=True)
輸出:
Trying:
????Mul(4,?5)
Expecting:
????20
ok
Trying:
????Mul(19,?20)
Expecting:
????39
**********************************************************************
File?"__main__",?line?10,?in?Mul.Mul
Failed?example:
????Mul(19,?20)
Expected:
????39
Got:
????380
1?items?had?no?tests:
Mul
**********************************************************************
1?items?had?failures:
???1?of???2?in?Mul.Mul
2?tests?in?2?items.
1?passed?and?1?failed.
***Test?Failed***?1?failures.
5.Yield聲明
Yield 語句是 Python 的另一個令人驚嘆的特性,它的工作方式類似于 return 語句,但它不是終止函數并返回,而是返回到它返回給調用者的點:
#?Yield聲明
def?func():?
????print(1)?
????yield?1?
????print(2)?
????yield?2?
????print(3)?
????yield?3?
????
for?call?in?func():?
????pass#?輸出
#?1?
#?2?
#?3
6.處理字典缺失鍵
有時我們正在訪問的鍵不存在于字典中,這會導致鍵錯誤。為了處理丟失的鍵,我們可以使用get() 方法而不是括號方法:
#?處理字典中的缺失值
dict_1 =?{1:"x",2:"y"}
#?不要使用get
print(dict_1[3])?#?key?error
#?使用get??
print(dict_1.get(3))?#??None
7.For/Else 和 While/Else
你知道 Python 還支持帶有 For 和 While 循環的 Else 嗎?當你的循環完成其迭代而沒有任何中斷時,將執行此 else 語句。
下面的 For 循環示例 else 將執行,但在 While 循環中,我添加了一個不會觸發 else 語句的 break 語句:
#?為/否則??
for?x?in?range(5):?
????print(x)?
else:?
????print("Loop?Completed")?#?執行#?While?/?Else?
i?=?0?
while?i?<?5:?
????break?
else:?
????print("Loop?Completed")?#?未執行
8.命名字符串格式化
此功能將替換字符串占位符中的值。當你需要在字符串的不同占位符中添加值時,這會派上用場:
#?命名格式化字符串
a?=?"Python"?
b?=?"工作"#?Way?1?
string?=?"I?looking?for?a?{}?Programming?{}".format(a,?b)?
print(string)?#?I?looking?for?a?Python?Programming?Job
#Way?2?
string?=?f"I?looking?for?a?{a}?Programming?{b}"?
print(string)?#?I?looking?for?a?Python?Programming?Job
9.設置遞歸限制
這是 Python 的另一個很棒的特性,它可以讓你設置 Python 程序的遞歸限制。請查看以下代碼示例以更好地理解:
#?設置遞歸限制
import?sys
sys.setrecursionlimit?=?2000
print(sys.getrecursionlimit)?#?2000
10.條件參數
條件賦值功能使用三元運算符,可以根據特定條件在變量中賦值。看看下面的代碼示例:
#?條件參數
x?=?5?if?2?>?4?else?2
print(x)?#?2
y?=?10?if?32?>?41?else?24
print(y)?#?24
11.參數拆包
你可以解壓縮函數中的任何可迭代數據參數。看看下面的代碼示例:
#?參數解包??
def?func(x,?y):?
????print(x,?y)?
list_1?=?[100,?200]?
dict_1?=?{'x':300,?'y':400}?
func(*list_1)?
func(**dict_1)??
#?輸出
#?100?200?
#?300?400
12.Hello World!
如果你鍵入以下代碼并運行它,這是一個有趣的功能。Python 會用兩個著名的詞來迎接你。試試看。
import?__hello__
13.多行字符串
此功能將向你展示如何編寫不帶三引號的多行字符串。看看下面的代碼示例:
#?多行字符串
str1=?"你是否正在尋找免費的Python學習材料"?\?
??????"歡迎來到?"?\
??????"公眾號?Python專欄"
print(str1)?