自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

被“嫌棄”的分號(hào)的一生:不要在Python中使用無(wú)用分號(hào)了

開發(fā) 后端
筆者準(zhǔn)備了一篇小指南,解釋為什么不應(yīng)該在Python中使用分號(hào),并列出了少數(shù)特殊情況。

本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)

我常在C / C ++語(yǔ)言中看到很多分號(hào)。在代碼中,分號(hào)表示語(yǔ)句終止。Python并未強(qiáng)制使用分號(hào)來(lái)分隔語(yǔ)句,但因?yàn)榉痔?hào)導(dǎo)致Python亂碼的情況可不少。

最近,筆者正在學(xué)習(xí)Python的數(shù)據(jù)科學(xué)課程。講師講解了條件語(yǔ)句并編寫了以下代碼:

  1. temp =10;if temp <12: print('It is cold'); cold = True

筆者當(dāng)時(shí)的反應(yīng)是:這太可怕了!分號(hào)僅在Python中的非典型情況下使用。筆者準(zhǔn)備了一篇小指南,解釋為什么不應(yīng)該在Python中使用分號(hào),并列出了少數(shù)特殊情況。

語(yǔ)句終止符

 

[[331088]]

 

 

圖源:unsplash

 

在許多大眾的編程語(yǔ)言中,需要在每個(gè)語(yǔ)句的末尾添加分號(hào)。例如,在C ++中:

  1. int c =10
  2. int a = 5;printf('In C++, semicolon at the end is must'); 

但Python并非如此。Python是一種簡(jiǎn)潔的編程語(yǔ)言,你不需要添加不必要的字符和語(yǔ)法。在Python中,一條語(yǔ)句結(jié)束于一行的結(jié)尾(方括號(hào),引號(hào)或括號(hào)除外)。例如:

  1. c = 10 
  2. a = 5print('No semicolons in Python') 

語(yǔ)句分隔符

Python中的分號(hào)表示分隔,而不是終止。它允許在同一行中編寫多個(gè)語(yǔ)句。

  1. print('Statement1'); print('Statement 2'); print('Statement 3') 

此語(yǔ)法允許在單個(gè)語(yǔ)句的末尾加上分號(hào):

  1. print('WhyGod? WHY?'); 

該語(yǔ)句表示print('...'),然后在下一句終止。因此它實(shí)際上是兩個(gè)語(yǔ)句,其中第二個(gè)為空。即使該語(yǔ)言允許使用分號(hào)分隔語(yǔ)句,但大多數(shù)Python程序員都不會(huì)在其代碼中使用它。

 

[[331089]]

 

 

圖源:unsplash

 

Python應(yīng)該是清晰可讀的。分號(hào)之類的語(yǔ)法字符會(huì)導(dǎo)致不必要的混亂。如果將這樣的代碼發(fā)送給經(jīng)驗(yàn)豐富的Python程序員,他可能不會(huì)再理你了。

  1. temp =10cold =False
  2.               if temp<15: print('It is cold'); cold =True; print('Another statement') 
  3.           print(cold); print('Done'); 

將多條語(yǔ)句強(qiáng)制放在一行上會(huì)使原本簡(jiǎn)單的代碼難以閱讀。

何時(shí)使用分號(hào)?

那么問題來(lái)了,既然分號(hào)既不美觀又礙事,為什么Python中允許使用分號(hào)?

筆者認(rèn)為,這是為了使兩種編程語(yǔ)言之間的轉(zhuǎn)換變得稍微容易一些。具有Java,C ++和PHP背景的程序員習(xí)慣性地將(無(wú)用的)終止符放在每一行的末尾。

但是,在下列這些情況下,分號(hào)也會(huì)派上用場(chǎng):

從Shell運(yùn)行腳本

最常見的一種情況是使用python-c' <script> '從shell運(yùn)行一個(gè)簡(jiǎn)短的腳本。因?yàn)椴荒茉诖颂幨褂每s進(jìn),所以需要鍵入許多用分號(hào)分隔的表達(dá)式。以下面語(yǔ)句為例:

  1. python-c 'import math; t = math.pi;print(int(t))’ 

另一個(gè)用例是exec語(yǔ)句:

  1. exec('fori in [100,200,300]: print(i);print(i*2)') 

評(píng)估表達(dá)式的副作用

[[331090]]

圖源:unsplash

在Jupyter Notebook之類的交互式環(huán)境中工作時(shí),最后一個(gè)表達(dá)式返回的值將以字符串形式輸出。評(píng)估某個(gè)函數(shù)的副作用真的會(huì)很煩人,在matplotlib中查看這個(gè)問題會(huì)產(chǎn)生贅余。

筆者將在JupyterNotebook中創(chuàng)建一個(gè)簡(jiǎn)單的直方圖。如下圖所示,運(yùn)行此腳本會(huì)在輸出時(shí)添加多余的一行:Text(0.5,1.0,'Histogram')。

被“嫌棄”的分號(hào)的一生:不要在Python中使用無(wú)用分號(hào)了

這實(shí)際上是調(diào)用.set_title(...)函數(shù)的返回值。為了抑制輸出,可以在最后一條語(yǔ)句的末尾添加一個(gè)分號(hào):

  1. axis.set_title('Histogram',size=10); 

簡(jiǎn)潔就是偉大,我們?cè)诰帉懘a時(shí)應(yīng)避免添加任何多余的字符。刪掉那些多余的分號(hào)吧,僅在必要時(shí)使用即可。

 

責(zé)任編輯:趙寧寧 來(lái)源: 讀芯術(shù)
相關(guān)推薦

2023-09-27 10:19:37

類型video函數(shù)

2022-08-10 14:36:05

Python循環(huán)函數(shù)

2015-04-23 08:51:53

2021-03-06 22:21:58

分號(hào)代碼 語(yǔ)言

2021-09-28 08:05:56

黑客網(wǎng)絡(luò)安全網(wǎng)絡(luò)攻擊

2023-08-31 09:10:18

JavaScript調(diào)試

2019-04-15 14:05:56

MySQLUTF-8數(shù)據(jù)庫(kù)

2021-03-29 08:05:15

User項(xiàng)目安全

2015-08-03 09:33:21

PH程序員一生

2021-10-18 10:53:26

Go 代碼技術(shù)

2023-01-10 08:20:55

RocketMQ消息源碼

2020-06-04 08:10:30

Python字符串開發(fā)

2018-07-16 16:29:26

編程函數(shù)代碼

2016-08-24 11:13:30

2009-07-20 18:03:26

Scala程序Singleton對(duì)象

2022-07-29 16:39:02

PHP編程語(yǔ)言

2020-07-08 09:30:29

Python編程語(yǔ)言終止符

2021-08-06 22:43:54

中斷架構(gòu)傳遞

2020-07-09 17:37:47

Linux網(wǎng)絡(luò)包中斷

2018-01-18 09:05:05

存儲(chǔ)數(shù)據(jù)包分層
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)