提公升Python逼格的10個語法 下

2021-10-01 19:07:00 字數 2708 閱讀 4014

python 是一種代表簡單思想的語言,其語法相對簡單,很容易上手。不過,如果就此小視 python 語法的精妙和深邃,那就大錯特錯了。本文精心篩選了最能展現 python 語法之精妙的十個知識點,並附上詳細的例項**。如能在實戰中融會貫通、靈活使用,必將使**更為精煉、高效,同時也會極大提公升**b格,使之看上去更老練,讀起來更優雅

yield 則是用於構造生成器的。比如,我們要寫乙個函式,返回從0到某正整數的所有整數的平方,傳統的**寫法是這樣的。請看:

>>

>

defget_square

(n):

result =

list()

for i in

range

(n):

pow(i,2)

)return result

>>

>

print

(get_square(5)

)[0,

1,4,

9,16]

在各種稀奇古怪的語法中,列表推導式的使用頻率應該時最高的,對於**的簡化效果也非常明顯。比如,求列表各元素的平方,通常應該這樣寫(當然也有其他寫法,比如使用map函式)

a =[1

,2,3

,4,5

]result =

list()

for i in a:

result[1

,4,9

,16,25

]

但是如果計算1億以內的所有整數的平方,這個函式的記憶體開銷會非常大,這是 yield 就可以大顯身手了:

>>

>

defget_square

(n):

for i in

range

(n):

yield

(pow

(i,2))

>>

> a = get_square(5)

>>

> a

>

>>

>

for i in a:

print

(i, end=

', ')0

,1,4

,9,16

,

裝飾器很強大,我在這裡嘗試從需求的角度,用乙個簡單的例子,說明裝飾器的使用方法和製造工藝。假如我們需要定義很多個函式,在每個函式執行的時候要顯示這個函式的執行時長,裝飾器那麼簡單、優雅。下面的例子,很好地展示了這一點。

>>

>

import time

>>

>

deftimer

(func)

:def

(*args,

**kwds)

: t0 = time.time(

) func(

*args,

**kwds)

t1 = time.time(

)print

('耗時%0.3f'

%(t1-t0,))

>>

> @timer

defdo_something

(delay)

:print

('函式do_something開始'

) time.sleep(delay)

print

('函式do_something結束'

)>>

> do_something(3)

函式do_something開始

函式do_something結束

耗時3.077

所謂斷言,就是宣告表示式的布林值必須為真的判定,否則將觸發 assertionerror 異常。嚴格來講,assert是除錯手段,不宜使用在生產環境中,但這不影響我們用斷言來實現一些特定功能,比如,輸入引數的格式、型別驗證等。

>>

>

defi_want_to_sleep

(delay)

:assert

(isinstance

(delay,

(int

,float))

),'函式引數必須為整數或浮點數'

print

('開始睡覺'

) time.sleep(delay)

print

('睡醒了'

)>>

> i_want_to_sleep(

1.1)

開始睡覺

睡> i_want_to_sleep(2)

開始睡覺

睡> i_want_to_sleep(

'2')

traceback (most recent call last)

: file ""

, line 1,in

i_want_to_sleep(

'2')

file ""

, line 2

,in i_want_to_sleep

assert

(isinstance

(delay,

(int

,float))

),'函式引數必須為整數或浮點數'

assertionerror: 函式引數必須為整數或浮點數

提公升Python逼格的10個語法 上

python 是一種代表簡單思想的語言,其語法相對簡單,很容易上手。不過,如果就此小視 python 語法的精妙和深邃,那就大錯特錯了。本文精心篩選了最能展現 python 語法之精妙的十個知識點,並附上詳細的例項 如能在實戰中融會貫通 靈活使用,必將使 更為精煉 高效,同時也會極大提公升 b格,使...

Python提公升「技術逼格」的6個方法

from numpy import random a random.random 10000 lst for i in a lst i i for i in a 使用列表生成式 gen i i for i in a 生成器更節省記憶體da from operator import itemgette...

經驗分享 提公升Python基礎技術逼格的6個方法

在學習過程中有什麼不懂得可以加我的 python學習資源qun,855408893 與你分享python企業當下人才需求及怎麼從零基礎學習好python,和學習什麼內容 from operator import itemgettera a.sort key itemgetter weather da...