日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

引言

 

Python/ target=_blank class=infotextkey>Python已成為許多編程初學者的必備語言。

 

因為Python在機器學習、數據處理和其他領域的廣泛能力,

 

許多不同語言背景的人可能都會考慮改用Python。

 

Python的設計其實非常簡單。

 

但在某些情況下,可能會讓初學者感到困惑。

 

所以本文我想澄清一些令人困惑的Python特性。

 

初學者最容易翻車的三大Python功能

圖源:Juan Pablo Donadías

 

 

 

??邏輯運算符:and, or

 

 

 

當我們構造if…else…語句時,通常需要給定一個求值的條件。

 

當條件返回為True時,執行if函數。

 

如果為False,則執行else函數。

 

如果某個條件是由多個部分組成的,就需要我們用邏輯運算符and和or進行連接。

 

在這里,每個部分都同時為True的時候,and才能成立;

 

但當任一條件為True時,or就能成立。

 

 

有些人會把它們作為三元表達式使用,

 

這種情況下,我們可以直接評判這些組合條件。

 

具體參考以下示例:

 

初學者最容易翻車的三大Python功能

 


以上這兩個例子表明,這種方式會返回第一個非錯誤值(non-falsy object)

 

那么,下面這個代碼又會返回什么結果呢?

 

初學者最容易翻車的三大Python功能

 

 

如果運行這些代碼,你會發現,what在這里返回的是空列表(empty list)

 

我們把這個結果的原因留到以后討論。

 

接下來,觀察下面這個使用and邏輯運算符的示例:

 

初學者最容易翻車的三大Python功能

 

 

仔細察看這些例子,看看你是否知道得出這些結果的原因。

 

在Python中,這些組合條件遵循的是短路原則(short circuit rule)

 

意思是,在用and運算符時,系統會查找第一個錯誤值(falsy value)

 

如果找到,就會停止運算并返回falsy值,比如上面代碼中的text1。

 

如果找不到,就會返回最后一項,比如上面的number1和text2。

 

or運算則會尋找第一個真值(truthy value)

 

如果找到就會停止運算,并返回真值(truth value),比如上面的number和text變量。

 

但如果找不到任何內容,它會返回最后一項,如what變量所示

 

 

 

?? 賦值表達式

 

 

 

在Python和許多其他編程語言中,表達式(expressions)語句(statements)是兩種截然不同的概念。

 

通常,表達式代表的是一個Python對象的計算結果。

 

我們可以在內置的eval方法中使用表達式,來生成求值。

 

相反,語句執行的是一個動作,而不是計算,語句是不能用來求值的。

 

語句的其中一種特殊形式是賦值(assignment)

 

具體來講,就是當我們給一個變量賦值時,它就變成了一個賦值語句,這個過程是一個動作。

 

我們在創建一個新變量,但不是進行求值。

 

下圖是一個例子:

 

初學者最容易翻車的三大Python功能

無法評估語句

 

Python從版本3.8開始引入了新功能,它允許特定的賦值語句具有表達式的特征。

 

也就是說,我們賦值給一個變量(assignment)的同時,也能得到一個值(expression)

 

該功能需要使用一個新操作符 “:=”,有些人把它稱為海象(walrus)運算符。

 

請看下面的示例:

 

初學者最容易翻車的三大Python功能

 

 

請注意,這個例子是沒有實際意義的,因為語法原因,我們在頂層使用賦值表達式時,必須用到括號。

 

接下來,我們會再看一個不需要括號的更實際的例子。

 

假設我們有一個數字的列表,想要計算出它們的累計求和(cumulative sum)并保存到列表中。

 

我們可以利用itertools模塊中的accumulate函數運行,具體操作如下:

 

初學者最容易翻車的三大Python功能

使用accumulate計算累計求和

 

當然,還有另一種利用賦值表達式的解決方案。

 

具體如下:

 

初學者最容易翻車的三大Python功能

 

 

在列表的推導式中,我們要把表達式放在for關鍵字之前。

 

雖然賦值語句(Assignment)不能出現在那,但賦值表達式(assignment expression)是可以的。

 

重要的是,這個表達式能夠更新total這個變量,我們還可以用它來獲取累計求和。

 

 

 

? 上下文管理:with

 

 

 

在研究別人的代碼時,你可能會碰到這樣的用法。

 

就是用with語句打開文件,對文件本身執行必要的操作。

 

初學者最容易翻車的三大Python功能

 

 

有可能你在其他文本相關的操作也會用到這個方法,但你有思考過為什么要這樣操作嗎?

 

畢竟,它會產生額外的縮進,多少會分散注意力。

 

這一功能背后的主要概念被稱為上下文管理(Context Management)

 

意思是,這個語句會創建一個上下文,你可以在其中訪問管理資源。

 

在這個例子里,我們指的就是文本。

 

在沒有上下文管理的情況下,我們應該對此文件執行以下操作:

 

初學者最容易翻車的三大Python功能

文件操作

 

你可以看到,使用文件時,我們要打開和關閉它。

 

關閉文件這個動作很關鍵,因為如果文件在其他地方使用,

 

不關閉文件的話,更新的內容很可能就不會保存到文件中。

 

with語句的目的就是為我們處理這種情況的代碼。

 

具體來說,就是退出with語句后,文件會被自動關閉。

 

如下所示:

 

初學者最容易翻車的三大Python功能

 

 

 

 

?總結

 

 

 

本文中,我們回顧了Python中讓初學者困惑的三個特性,希望我解釋清楚了。

 

下面,讓我們快速回顧一下:

 

  • 1、當我們使用組合條件時,Python會進行短路計算。使用and操作時,它將返回第一個虛值或最后一項。使用or操作時,它會返回第一個真值或最后一項。

 

  • 2、表達式(expressions)語句(statements)不同。賦值語句(assignment statement)不會產生任何值。但是,賦值表達式(嗄ssignment expression)在分配變量的同時還能求值。

 

  • 3、當需要管理特定上下文時,我們可以使用with語句。最常見的情況是對一個文件進行操作。退出上下文時,上下文管理器會自動為我們關閉文件。

分享到:
標簽:Python
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定