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

為了更好的代碼:12個(gè)Python小竅門

開發(fā) 后端
使用和學(xué)習(xí)Python的人不在少數(shù),但是真正掌握了解這門語言的人并不多。你了解最新的Python功能和技術(shù)嗎?這12個(gè)小技巧能幫助你提高代碼質(zhì)量。

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

使用和學(xué)習(xí)Python的人不在少數(shù),但是真正掌握了解這門語言的人并不多。你了解最新的Python功能和技術(shù)嗎?這12個(gè)小技巧能幫助你提高代碼質(zhì)量。

[[334111]]

1. F-Strings

F-Strings提供了一種簡(jiǎn)便的方法,可以將Python表達(dá)式嵌入字符串文本中進(jìn)行格式化。首先,定義print語句中的會(huì)用到的兩個(gè)變量:name和age。

  1. name = "Pavel" 
  2. age = 23 

為了不處理字符串連接或在print語句中使用逗號(hào),可以使用Python3.6升級(jí)版字符串格式化法“f-Strings”。只需在大括號(hào)內(nèi)有變量或表達(dá)式的字符串前面放一個(gè)小寫或大寫字母“f”即可。

F-Strings是一種很棒的格式化字符串新方法,此法得出的結(jié)果可讀性更強(qiáng)、速度更快、格式更簡(jiǎn)潔、更不容易出錯(cuò)。

2. 查找任何對(duì)象的大小

默認(rèn)的sys模塊包含一個(gè)getsizeof函數(shù),該函數(shù)接受一個(gè)對(duì)象并以字節(jié)為單位返回其大小。該對(duì)象可以是任何類型。例如:

僅計(jì)算直接歸因于該對(duì)象的內(nèi)存消耗,而不計(jì)算它所指對(duì)象的內(nèi)存消耗。再來看另一個(gè)例子:

3. 原地交換變量

在許多其他編程語言中,只有通過定義一個(gè)額外的temp(臨時(shí))變量才能交換兩個(gè)或以上變量的值。假設(shè)想交換x和y:

  1. temp = x 
  2. x = y 
  3. y = temp 

Python用一種簡(jiǎn)單的單行結(jié)構(gòu)來交換變量,類似于將值賦給一行中多個(gè)變量的概念。以下代碼與上面代碼相同,但沒有使用任何臨時(shí)變量:

4. 比較運(yùn)算符的鏈接

通常要檢查兩個(gè)以上的條件時(shí),必須使用邏輯運(yùn)算符,例如and/or:

  1. if a < b and b < c: 

在Python中,有一種更好的方法可以使用比較運(yùn)算符鏈接來編寫它。運(yùn)算符的鏈可寫為:

  1. if a < b < c: 

例如:

5. 列表理解

列表理解是更常用、更巧妙的列表制作方式。不需要?jiǎng)?chuàng)建空列表并將每個(gè)元素添加到末尾,只需按照以下格式同時(shí)定義列表及其內(nèi)容:

  1. new_list = [expression for item in iterable (if conditional)] 

例如:

另一個(gè)例子(有條件):

6. 字符串乘法

在Python中,不僅可以乘以數(shù)字,還可以乘以字符串。例如:

7. 在一行中分配多個(gè)變量

可用逗號(hào)分隔變量和值,從而把多個(gè)值分配給各個(gè)變量:

這在對(duì)序列(例如列表或元組)解構(gòu)/解包時(shí)也同樣適用,并且是將序列的元素更巧妙地分配給各個(gè)變量,因?yàn)椴恍枰褂醚h(huán)或單獨(dú)索引序列中的每個(gè)元素。

8. 參數(shù)解包

當(dāng)需要對(duì)列表或元組中的參數(shù)進(jìn)行解包以進(jìn)行需要單獨(dú)位置參數(shù)的函數(shù)調(diào)用時(shí),Splat或Scatter運(yùn)算符* 有時(shí)能發(fā)揮作用。

例如,內(nèi)置的range()函數(shù)需要單獨(dú)的開始和停止參數(shù)。編寫函數(shù)調(diào)用時(shí),可以使用* 運(yùn)算符將參數(shù)從列表或元組中解包:

  1. 讓我們定義一個(gè)簡(jiǎn)單的列表:x = [1,2,3,4,5]。 

解包運(yùn)算符的一個(gè)常見示例是使用 print:

  1. print(*x) // Result: 1 2 3 4 5 

這只是打印出列表中的每個(gè)元素,這些元素以空格分隔,因?yàn)榻獍\(yùn)算符接受了列表中的所有元素,并將它們作為參數(shù)傳遞,因此上面代碼轉(zhuǎn)換成print(1,2,3,4,5)。

這個(gè)Python技巧在函數(shù)中經(jīng)常使用,以將方法調(diào)用接收到的所有參數(shù)‘打包’到單個(gè)變量中。例如:

上面的函數(shù)func可以接受無限數(shù)量的參數(shù)(args[0]和args[1]將分別提供第一個(gè)和第二個(gè)參數(shù))。

以類似的方式,字典可以使用**運(yùn)算符傳遞關(guān)鍵字參數(shù)。來定義一個(gè)名為 person的Python字典:

  1. person = {"name": "Paul", "age":23, "location": "London"} 

你可以使用**運(yùn)算符將字典傳遞給函數(shù)。傳入字典將把keys分解為函數(shù)關(guān)鍵字參數(shù),然后將該值作為為該參數(shù)傳遞的實(shí)際值。例如:

9. 創(chuàng)建Enum

Enum是Python中用于創(chuàng)建枚舉的類,枚舉是附加到唯一常量值的一組符號(hào)名。

為了創(chuàng)建Enum,必須創(chuàng)建一個(gè)類,該類是所需Enum的名稱。剩下要做的就是列出變量并將其設(shè)置為所需的值:

以訪問枚舉成員Paul為例,只需執(zhí)行Person.Paul,它將返回0。在Python中,可以通過以下方式簡(jiǎn)化上述示例:將變量彼此相鄰列出并將它們?cè)O(shè)置為等于range函數(shù):

10. Enumerate

通常在遍歷列表時(shí),不僅要訪問列表中所有的索引,還要訪問實(shí)際元素。來定義一個(gè)字符列表:

  1. x = ['a', 'b', 'c'] 

與其以標(biāo)準(zhǔn)方式遍歷它,不如訪問元素和索引:

使用Enumerate:

Enumerate是Python的內(nèi)置函數(shù),它使我們可以循環(huán)一個(gè)可迭代對(duì)象而且有一個(gè)自動(dòng)計(jì)數(shù)器。實(shí)際上它將列表中的每個(gè)元素與相應(yīng)的索引配對(duì),大多數(shù)新手,甚至一些高級(jí)程序員都不了解它。

可將變量 i和v更改為喜歡的變量名稱。例如,for index, count in enumerate(x).。

11. Help函數(shù)

Python help函數(shù)用于查找模塊、函數(shù)、類、關(guān)鍵字等的幫助文檔。只需在help函數(shù)中傳遞一個(gè)對(duì)象即可檢索該對(duì)象的幫助文檔:

12. Dir函數(shù)

dir()是Python3中一個(gè)強(qiáng)大的內(nèi)置函數(shù),它可返回任何對(duì)象(即函數(shù)、模塊、字符串、列表、字典等)的屬性和方法的列表。在幾乎沒有關(guān)于模塊的信息時(shí),這非常有用,有助于更快地學(xué)習(xí)新模塊。例如:

dir()通常用于調(diào)試目的。dir()能夠列出傳遞參數(shù)的所有屬性,在分別處理許多類和函數(shù)時(shí)非常有用。

編碼之路還很漫長(zhǎng),進(jìn)步要在一點(diǎn)點(diǎn)的積累中實(shí)現(xiàn)。

 

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

2020-06-23 07:48:18

Python開發(fā)技術(shù)

2010-09-26 14:57:40

控制IT預(yù)算

2016-05-24 09:40:20

2024-10-10 15:24:50

JSONPython

2022-08-20 19:12:22

編程竅門

2013-07-29 10:39:39

App竅門

2020-09-13 09:14:35

PythonJSON開發(fā)

2009-10-09 13:33:00

自學(xué)CCNACCNA

2009-06-23 13:32:48

JavaScript初竅門

2010-05-26 10:10:53

openssh

2009-07-14 10:21:19

Eclipse 3.5

2013-07-05 16:08:40

開發(fā)效率

2010-10-14 13:31:13

無線IP沖突

2010-09-29 08:45:12

Rundll32卸載

2018-09-11 08:40:00

前端JavaScriptt性能優(yōu)化

2010-09-29 09:01:10

2019-03-28 14:30:21

代碼開發(fā)命令

2016-05-26 10:21:18

Windows 10配置性能

2017-05-03 16:51:00

云服務(wù)器竅門選擇

2010-12-23 14:46:08

expect腳本
點(diǎn)贊
收藏

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