Python 是頂級(jí)編程語(yǔ)言之一,,它具有許多程序員從未使用過(guò)的許多隱藏功能。在這篇博客中,,我將分享你可能從未使用過(guò)的13 個(gè) Python 特性,。這是一個(gè) step 參數(shù),可以通過(guò)采取幾個(gè)步驟來(lái)分割你的列表,。此外,,你可以使用 step 參數(shù)來(lái)反轉(zhuǎn)整數(shù)??纯聪旅娴拇a示例:
# 列表Stepping
data = [10, 20, 30, 40, 50]
print(data[::2]) # [10, 30, 50]
print(data[::3]) # [10, 40]
# 使用 stepping 翻轉(zhuǎn)列表
print(data[::-1]) # [50, 40, 30, 20, 10]
find()
方法是一個(gè)很棒的功能,可以查找字符串中任何字符的任何起始索引號(hào):
# 查找方法
x = 'Python'
y = 'Hello From Python'
print(x.find('Python')) # 0
print(y.find('From')) # 6
print(y.find('From Python')) #6
iter()
方法對(duì)于沒(méi)有任何循環(huán)幫助的迭代列表很有用,。這是一個(gè)內(nèi)置方法,因此你不需要任何模塊:
# 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
Doctest 功能將讓你測(cè)試你的功能并顯示你的測(cè)試報(bào)告,。如果你檢查下面的示例,你需要在三引號(hào)中編寫一個(gè)測(cè)試參數(shù),,如下所示:
# Doctest
from doctest import testmod
def Mul(x, y) -> int:
'''
這個(gè)函數(shù)返回 x 和 y 參數(shù)的 mul
調(diào)用函數(shù),,然后是預(yù)期的輸出:
>>> Mul(4, 5)
20
>> > Mul(19, 20)
39
'''
return x * y
# 調(diào)用 testmod 函數(shù)
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.
Yield
語(yǔ)句是 Python 的另一個(gè)令人驚嘆的特性,,它的工作方式類似于 return 語(yǔ)句,但它不是終止函數(shù)并返回,,而是返回到它返回給調(diào)用者的點(diǎn):
# Yield聲明
def func():
print(1)
yield 1
print(2)
yield 2
print(3)
yield 3
for call in func():
pass# 輸出
# 1
# 2
# 3
有時(shí)我們正在訪問(wèn)的鍵不存在于字典中,這會(huì)導(dǎo)致鍵錯(cuò)誤,。為了處理丟失的鍵,,我們可以使用get() 方法而不是括號(hào)方法:
# 處理字典中的缺失值
dict_1 = {1:'x',2:'y'}
# 不要使用get
print(dict_1[3]) # key error
# 使用get
print(dict_1.get(3)) # None
你知道 Python 還支持帶有 For 和 While 循環(huán)的 Else 嗎,?當(dāng)你的循環(huán)完成其迭代而沒(méi)有任何中斷時(shí),將執(zhí)行此 else 語(yǔ)句,。
下面的 For 循環(huán)示例 else 將執(zhí)行,,但在 While 循環(huán)中,我添加了一個(gè)不會(huì)觸發(fā) else 語(yǔ)句的 break 語(yǔ)句:
# 為/否則
for x in range(5):
print(x)
else:
print('Loop Completed') # 執(zhí)行# While / Else
i = 0
while i < 5:
break
else:
print('Loop Completed') # 未執(zhí)行
此功能將替換字符串占位符中的值,。當(dāng)你需要在字符串的不同占位符中添加值時(shí),這會(huì)派上用場(chǎng):
# 命名格式化字符串
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 ,'
print(string) # I looking for a Python Programming Job
這是 Python 的另一個(gè)很棒的特性,它可以讓你設(shè)置 Python 程序的遞歸限制,。請(qǐng)查看以下代碼示例以更好地理解:
# 設(shè)置遞歸限制
import sys
sys.setrecursionlimit = 2000
print(sys.getrecursionlimit) # 2000
條件賦值功能使用三元運(yùn)算符,,可以根據(jù)特定條件在變量中賦值??纯聪旅娴拇a示例:
# 條件參數(shù)
x = 5 if 2 > 4 else 2
print(x) # 2
y = 10 if 32 > 41 else 24
print(y) # 24
你可以解壓縮函數(shù)中的任何可迭代數(shù)據(jù)參數(shù)??纯聪旅娴拇a示例:
# 參數(shù)解包
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
如果你鍵入以下代碼并運(yùn)行它,這是一個(gè)有趣的功能,。Python 會(huì)用兩個(gè)著名的詞來(lái)迎接你,。試試看。
import __hello__
此功能將向你展示如何編寫不帶三引號(hào)的多行字符串,。看看下面的代碼示例:
# 多行字符串
str1= '你是否正在尋找免費(fèi)的Python學(xué)習(xí)材料' \
'歡迎來(lái)到 ' \
'公眾號(hào) 關(guān)于數(shù)據(jù)分析與可視化'
print(str1)
# 你是否正在尋找免費(fèi)的Python學(xué)習(xí)材料,,歡迎來(lái)到 公眾號(hào) 關(guān)于數(shù)據(jù)分析與可視化