一起來(lái)看看五條Python中的隱含特性
1. 引言
最近閑暇之余,我會(huì)去閱讀一些Python文檔,有時(shí)候會(huì)注意到一些有趣的Python特性,這些特性不禁讓人驚呼:“哇,Python原來(lái)還可以這么寫(xiě)”。
閑話(huà)少說(shuō),我們直接開(kāi)始吧。 :)
2. 函數(shù)屬性
和設(shè)置類(lèi)和對(duì)象的屬性類(lèi)似,我們?cè)赑ython中也可以為函數(shù)設(shè)置屬性。樣例代碼如下:
def func(x):
intermediate_var = x**2 + x + 1
if intermediate_var % 2:
y = intermediate_var ** 3
else:
y = intermediate_var **3 + 1
# setting attributes here
func.optional_return = intermediate_var
func.is_awesome = 'Yes, my function is awesome.'
return y
y = func(3)
print('Final answer is', y)
# Accessing function attributes
print('Show calculations -->', func.optional_return)
print('Is my function awesome? -->', func.is_awesome)
觀察上述代碼,我們?cè)诘?行設(shè)置函數(shù)屬性‘optional_return’在第10行設(shè)置屬性’is_awesome’.同時(shí),在最后兩行的調(diào)用語(yǔ)句里我們?cè)L問(wèn)了這兩個(gè)函數(shù)屬性的值。
上述代碼的運(yùn)行結(jié)果如下:
Final answer is 2197
Show calculations --> 13
Is my function awesome? --> Yes, my function is awesome.
當(dāng)我們希望選擇檢查一些函數(shù)中的中間變量,但不想每次調(diào)用函數(shù)時(shí)使用 return 語(yǔ)句顯式返回它時(shí),上述函數(shù)屬性的寫(xiě)法將會(huì)排上用場(chǎng)。
3. For-else循環(huán)
在 Python 中,我們可以在 for 循環(huán)中添加 else 語(yǔ)句。只有在執(zhí)行期間在循環(huán)體中沒(méi)有遇到 break 語(yǔ)句時(shí)才會(huì)觸發(fā) else 語(yǔ)句。樣例代碼如下:
my_list = ['some', 'list', 'containing', 'five', 'elements']
min_len = 3
for element in my_list:
if len(element) < min_len:
print(f'Caught an element shorter than {min_len} letters')
break
else:
print(f'All elements at least {min_len} letters long'
上述代碼輸出如下:
All elements at least 3 letters long
觀察上述代碼,else 在 for 級(jí)別縮進(jìn),而不是在 if 級(jí)別縮進(jìn)。在這里,沒(méi)有任何元素的長(zhǎng)度小于 3。因此,將永遠(yuǎn)不會(huì)遇到 break 語(yǔ)句。因此,else 子句將被觸發(fā)(在執(zhí)行 for 循環(huán)之后)并打印上面顯示的輸出。
4. int型分隔符
一般來(lái)說(shuō),從視覺(jué)效果上看人眼很難分辨出數(shù)字10000000 和100000000 ,在Python中我們不能像英語(yǔ)那樣直接使用逗號(hào)分隔符來(lái)將數(shù)字隔開(kāi),這是因?yàn)镻ython會(huì)將逗號(hào)分隔開(kāi)的數(shù)字解釋為多個(gè)整數(shù)的元組。
但是,Python也有一種方便的方式來(lái)處理這種情形:我們可以使用下劃線(xiàn)當(dāng)做分隔符來(lái)提升數(shù)字的可讀性,此時(shí)數(shù)字1_000_000將被解釋成整形數(shù)字并增加了可讀性。
代碼樣例如下:
a = 3250 b = 67_543_423_778 print(type(a)) print(type(b)) print(type(a)==type(b))
運(yùn)行結(jié)果如下:
<class 'int'>
<class 'int'>
True
5. eval() and exec()
Python 具有動(dòng)態(tài)讀取字符串并將其視為一段 Python 代碼的能力。這主要是通過(guò)使用 eval() 和 exec() 函數(shù)來(lái)實(shí)現(xiàn)的(“eval”用于評(píng)估表達(dá)式,“exec”用于執(zhí)行語(yǔ)句)。
代碼舉例如下:
a = 3
b = eval('a + 2')
print('b =', b)
exec('c = a ** 2')
print('c is', c)
運(yùn)行結(jié)果如下:
b = 5
c is 9
上述代碼中,eval() 函數(shù)將輸入字符串作為 Python 表達(dá)式讀取,對(duì)其求值,并將結(jié)果分配給變量“b”。同時(shí),exec() 函數(shù)將輸入字符串作為 Python 語(yǔ)句讀取并執(zhí)行。
6. 省略號(hào)
省略號(hào)或“…”是 Python 的內(nèi)置常量,類(lèi)似于 None、True、False 等內(nèi)置常量。它可以以不同的方式使用,包括但不限于:
6.1 占位符
和 pass 類(lèi)似,省略號(hào)可以在代碼沒(méi)有寫(xiě)完整的時(shí)候用作占位符,舉例如下:
def some_function():
...
def another_function():
pass
6.2 numpy數(shù)組中用于切片
NumPy中使用省略號(hào)可以對(duì)數(shù)組進(jìn)行切片。以下代碼顯示了對(duì) NumPy 數(shù)組進(jìn)行切片的兩種等效方法:
import numpy as np a = np.arange(16).reshape(2,2,2,2) print(a[..., 0].flatten()) print(a[:, :, :, 0].flatten())
結(jié)果如下:
[ 0 2 4 6 8 10 12 14]
[ 0 2 4 6 8 10 12 14]
7.總結(jié)
Python 不僅是一門(mén)有用的語(yǔ)言,而且是一門(mén)非常有趣的語(yǔ)言。我們都忙于生活工作,但為了更好地了解語(yǔ)言本身的一些特性并沒(méi)有什么壞處。在本文中,重點(diǎn)介紹了5個(gè)Python中隱含的特性,并給出了相關(guān)代碼的講解。
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
python通過(guò)線(xiàn)程實(shí)現(xiàn)定時(shí)器timer的方法
這篇文章主要介紹了python通過(guò)線(xiàn)程實(shí)現(xiàn)定時(shí)器timer的方法,涉及Python線(xiàn)程與定時(shí)器timer的使用技巧,需要的朋友可以參考下2015-03-03
Python?pyinstaller打包exe最新完整圖文教程
pyinstaller是一個(gè)非常簡(jiǎn)單的打包python的py文件的庫(kù),下面這篇文章主要給大家介紹了關(guān)于Python?pyinstaller打包exe的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12
Django與數(shù)據(jù)庫(kù)交互的實(shí)現(xiàn)
最近在學(xué)習(xí)Django,本文主要介紹了Django與數(shù)據(jù)庫(kù)交互的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
利用Python探測(cè)附近WIFI密碼的詳細(xì)代碼
這篇文章主要介紹了利用Python探測(cè)附近WIFI密碼,基于python腳本實(shí)現(xiàn)wifi密碼的暴力破解從而實(shí)現(xiàn)免費(fèi)蹭網(wǎng),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2022-01-01
Python常用數(shù)據(jù)類(lèi)型之列表使用詳解
列表是Python中的基礎(chǔ)數(shù)據(jù)類(lèi)型之一,其他語(yǔ)言中也有類(lèi)似于列表的數(shù)據(jù)類(lèi)型,比如js中叫數(shù)組,他是以[ ]括起來(lái),每個(gè)元素以逗號(hào)隔開(kāi),而且他里面可以存放各種數(shù)據(jù)類(lèi)型。本文將通過(guò)示例詳細(xì)講解列表的使用,需要的可以參考一下2022-04-04
Python實(shí)現(xiàn)獲取視頻時(shí)長(zhǎng)功能
這篇文章主要介紹了Python如何實(shí)現(xiàn)獲取視頻時(shí)長(zhǎng)功能,可以精確到毫秒。文中的示例代碼簡(jiǎn)潔易懂,對(duì)我們的學(xué)習(xí)有一定的幫助,感興趣的可以了解一下2021-12-12
Python中命令行參數(shù)argparse模塊的使用
argparse是python自帶的命令行參數(shù)解析包,可以用來(lái)方便的服務(wù)命令行參數(shù)。本文將通過(guò)示例和大家詳細(xì)講講argparse的使用,需要的可以參考一下2023-02-02
pandas中g(shù)roupby操作實(shí)現(xiàn)
本文主要介紹了pandas中g(shù)roupby操作實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
Python動(dòng)刷新12306火車(chē)票的代碼(附源碼)
這篇文章主要介紹了Python動(dòng)刷新12306火車(chē)票的完整代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2018-01-01
Python必備技巧之Pandas數(shù)據(jù)合并函數(shù)
Pandas中一共有五個(gè)數(shù)據(jù)合并函數(shù),分別為:concat、append、merge、join、combine,本文詳細(xì)講解這五個(gè)函數(shù)的使用方法,需要的可以參考一下2022-03-03

