偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Python的26個(gè)小技巧

開發(fā) 后端
我把使用Python作為數(shù)據(jù)科學(xué)家日常工作的一部分。一路上,我學(xué)會了一些有用的技巧和要點(diǎn)。

Python的26個(gè)小技巧

Python是世界上***的編程語言之一。

這有許多原因:

  •     容易學(xué)習(xí)
  •     可跨平臺
  •     擁有大量的模塊和庫

我把使用Python作為數(shù)據(jù)科學(xué)家日常工作的一部分。一路上,我學(xué)會了一些有用的技巧和要點(diǎn)。

在這里,我嘗試以A - Z格式分享其中的一些。這些“技巧”大部分是我在日常工作中使用或偶然發(fā)現(xiàn)的。我在瀏覽Python標(biāo)準(zhǔn)庫文檔時(shí)發(fā)現(xiàn)了一些。另一些是我在搜索PyPi時(shí)發(fā)現(xiàn)的。

然而,值得稱贊的是其中的四五個(gè)是我在awesome-python.com發(fā)現(xiàn)的。這是數(shù)百個(gè)有趣的Python工具和模塊的精選列表。值得瀏覽尋找靈感!

all or any

python之所以如此受歡迎的原因之一是因?yàn)樗勺x性和表現(xiàn)力強(qiáng)。人們經(jīng)常開玩笑說Python是“可執(zhí)行偽代碼”。但是,當(dāng)你可以編寫這樣的代碼時(shí),很難用其他方式反駁:

bashplotlib

你想在控制臺中繪制圖表嗎?

你就可以在控制臺中畫出圖表了。

collections

python有一些很好的默認(rèn)數(shù)據(jù)類型,但有時(shí)它們表現(xiàn)的不如你期望的哪樣。幸運(yùn)的是,Python標(biāo)準(zhǔn)庫提供了collections模塊。這個(gè)方便的附加組件為您提供了更多的數(shù)據(jù)類型。

dir

你有沒有想過如何在Python對象內(nèi)部查看它的屬性?這當(dāng)然可以??纯聪旅孢@條命令行:

當(dāng)以交互方式運(yùn)行Python時(shí),這可能是一個(gè)非常有用的功能,可以動態(tài)地查看您正在使用的對象和模塊。

emoji

是的,這是真的!

不要假裝你不想去嘗試......

 

from __future__ import

Python的流行導(dǎo)致是總是有新版本在開發(fā)中。新版本意味著新功能——除非你的版本已經(jīng)過時(shí)。

然而,不要害怕。__future__模塊允許你從Python的未來的版本導(dǎo)入功能。這簡直就像時(shí)間旅行,或者魔法什么的。

為什么不開始導(dǎo)入花括號?

geopy

地理可能是程序員難以挑戰(zhàn)的領(lǐng)域,時(shí)常讓人找不清方向。但是geopy模塊讓這變得異常簡單。

它通過抽取一系列不同的地理編碼服務(wù)APIs來工作。使你能夠獲得一個(gè)地方的完整街道地址、緯度、經(jīng)度和海拔。還有一個(gè)有用的distance類。以你喜歡的單位計(jì)算兩個(gè)位置之間的距離。

 

howdoi

遇到編碼問題,但不記得你以前見過的解決方案了?需要檢索StackOverflow,但不想離開終端?

那么你需要這個(gè)有用的命令行工具。

無論你有什么問題,都要問它,它會盡***努力回答你的問題

但是請注意——它從StackOverflow的置頂答案中抓取代碼。因此可能不總是提供最有用的信息...

inspect

python的inspect模塊非常有助于理解幕后發(fā)生的事情。你甚至可以用它調(diào)用它自己的方法!

下面的代碼示例使用inspect.getsource輸出它自己的源代碼。它還使用inspect.getmodule輸出由它定義的模塊。

***一行代碼打印出自己的行號。

當(dāng)然,除了這些瑣碎的用途之外,inspect模塊對于理解代碼正在做什么可能會很有用。你也可以用它來編寫自我記錄的代碼。

Jedi

Jedi庫是一個(gè)自動補(bǔ)全和代碼分析庫。它使編寫代碼更快、更有成效。

除非你正在開發(fā)自己的IDE,否則你可能會對使用Jedi作為編輯器插件最感興趣。幸運(yùn)的是,這已經(jīng)成為現(xiàn)實(shí)了!然而,你可能已經(jīng)在使用Jedi。IPython項(xiàng)目正利用Jedi的代碼自動補(bǔ)全功能。

**kwargs

學(xué)習(xí)任何語言時(shí),都會有許多里程碑。對于Python來說,理解神秘的**kwargs語法可能算一個(gè)。

字典對象前面的雙星號允許您將該字典的內(nèi)容作為命名參數(shù)傳遞給函數(shù)。

字典的鍵是參數(shù)名,值是傳遞給函數(shù)的值。你甚至不需要用kwargs命名字典!、

當(dāng)您想要編寫能夠處理事先未定義的命名參數(shù)的函數(shù)時(shí),這很有用。

List comprehensions

關(guān)于Python編程,我最喜歡的事情之一是它的列表生成。

這些表達(dá)式使得容易編寫非常干凈的代碼,讀起來幾乎像自然語言。

你可以在這里閱讀更多關(guān)于如何使用它們的信息。

map

python通過許多內(nèi)置特性支持功能編程。map函數(shù)是最有用的函數(shù)之一——特別是與lambda函數(shù)結(jié)合使用。

在上面的例子中,map將一個(gè)簡單的lambda函數(shù)應(yīng)用于x中的每個(gè)元素。它返回一個(gè)map對象,該對象可以轉(zhuǎn)換為一些可迭代的對象,如列表或元組。

newspaper3k

如果你還沒有見過它,那么準(zhǔn)備好讓Python的newspaper3k模塊震撼你。

它允許你從一系列領(lǐng)先的國際出版物中檢索新聞文章和相關(guān)元數(shù)據(jù)。您可以檢索圖像、文本和作者姓名。

它甚至有一些內(nèi)置的NLP功能。

因此,如果你想在下一個(gè)項(xiàng)目中使用BeautifulSoup或其他自制的網(wǎng)頁爬蟲庫,那么省下你的時(shí)間和精力,用代替。

Operator overloading

python為運(yùn)算符重載提供了支持,這是一個(gè)讓你聽起來像個(gè)合法的計(jì)算機(jī)科學(xué)家的術(shù)語。

這實(shí)際上是一個(gè)簡單的概念。有沒有想過python為什么允許你使用"+"運(yùn)算符來相加數(shù)字以及連接字符串?這就是運(yùn)算符重載。

你可以用特殊的方法定義使用Python標(biāo)準(zhǔn)運(yùn)算符符號的對象。這允許你在與你正在處理的對象相關(guān)的上下文中使用它們

pprint

python的默認(rèn)print函數(shù)的確可以完成它的工作。但是嘗試輸出出任何大的嵌套對象時(shí),結(jié)果會很難看。

這里有pretty-print標(biāo)準(zhǔn)庫??梢砸砸子陂喿x的格式輸出出復(fù)雜的結(jié)構(gòu)化對象。

對于任何處理non-trivial數(shù)據(jù)類型的Python開發(fā)人員來說都是必不可少的。

 

queue

python支持多線程,標(biāo)準(zhǔn)庫的queue模塊有助于實(shí)現(xiàn)這一點(diǎn)。

此模塊允許你實(shí)現(xiàn)隊(duì)列數(shù)據(jù)結(jié)構(gòu)。這些數(shù)據(jù)結(jié)構(gòu)允許您根據(jù)特定規(guī)則添加和檢索條目。

先進(jìn)先出(FIFO)隊(duì)列允許你按對象添加的順序檢索對象。后進(jìn)先出(LIFO)隊(duì)列允許你先訪問最近添加的對象。

***,優(yōu)先級隊(duì)列允許你根據(jù)對象的排序順序檢索對象。

這里有如何在Python中使用隊(duì)列進(jìn)行多線程編程的示例。

__repr__

在Python中定義類或?qū)ο髸r(shí),提供一種很有用的官方支持的方式將對象呈現(xiàn)為字符串。例如:

這使得調(diào)試代碼更加容易??梢蕴砑拥侥愕念惗x中,如下所示:

sh

python是一種很棒的腳本語言。有時(shí)使用標(biāo)準(zhǔn)的os和sbprocess庫會有點(diǎn)令人頭疼。

sh庫提供了一個(gè)簡潔的替代方案。

它允許你調(diào)用任何程序,就好像它是一個(gè)普通的函數(shù)一樣——對于自動化工作流和任務(wù)非常有用,所有這些都可以用Python完成。

Type hints

Python是一種動態(tài)類型語言。定義變量、函數(shù)、類等時(shí),不需要指定數(shù)據(jù)類型。

這有助于縮短開發(fā)時(shí)間。然而,沒有什么比簡單的類型問題導(dǎo)致的運(yùn)行錯(cuò)誤更令人討厭的了。

自Python 3.5以來,你可以選擇在定義函數(shù)時(shí)提供類型提示。

你也可以定義類型別名:

雖然這不是強(qiáng)制性的,但是類型注釋可以讓你的代碼更容易被理解。

它們還允許你在運(yùn)行之前使用類型檢查工具來捕獲這些雜散的類型錯(cuò)誤。如果你正在進(jìn)行大型復(fù)雜的項(xiàng)目,這很值得的使用!

uuid

生成通用唯一標(biāo)識(UUID)的一種快速簡單的方法是使用Python標(biāo)準(zhǔn)庫的UUID模塊。 

這可以產(chǎn)生一個(gè)隨機(jī)的128位數(shù)字,幾乎可以肯定這個(gè)數(shù)字是唯一的。

事實(shí)上,可以生成超過2112個(gè)可能的UUID。超過5x1036(或5,000,000,000,000,000,000,000,000,000,000,000,000)。

在給定的集合中找到重復(fù)的概率非常低。即使有萬億個(gè)UUID,重復(fù)存在的概率也遠(yuǎn)低于十億分之一。非常有用的兩行代碼。

Virtual environments

這可能是我最喜歡的關(guān)于Python的東西。

你很可能在同一時(shí)間處理多個(gè)Python項(xiàng)目。不幸的是,有時(shí)兩個(gè)項(xiàng)目將依賴于同一依賴關(guān)系的不同版本。你選擇在你的系統(tǒng)上安裝什么?

幸運(yùn)的是,Python對虛擬環(huán)境的支持讓你可以兼顧兩者。在命令行中:

現(xiàn)在,你可以在同一臺機(jī)器上分別存在Python的獨(dú)立版本和安裝環(huán)境。

wikipedia

維基百科有一個(gè)很好的API,允許用戶編程訪問***的完全免費(fèi)的知識和信息。

維基百科模塊使得訪問這個(gè)API變得非常方便。

像真實(shí)的網(wǎng)站一樣,該模塊支持多語言、頁面消除歧義、隨機(jī)頁面檢索,甚至還有一個(gè)donate方法.

xkcd

幽默是Python語言的一個(gè)重要特征——畢竟,它是以英國喜劇《巨蟒飛行馬戲團(tuán)》命名的。

Python的許多官方文檔都引用了該喜劇出名的獨(dú)幕。

盡管如此,幽默感并不局限于官方文檔。試試下面的代碼:

永遠(yuǎn)不要改變,Python。永不改變。

YAML

YAML代表“YAML Ain’t Markup Language”,它是一種數(shù)據(jù)格式化語言,是JSON的超集。

與JSON不同,它可以存儲更復(fù)雜的對象并引用自己的元素。你也可以寫注釋,使其特別適合于編寫配置文件。

PyYAML模塊允許你將YAML與Python一起使用。這樣安裝它:

然后導(dǎo)入到項(xiàng)目中:

PyYaML允許你存儲任何數(shù)據(jù)類型的Python對象,以及任何用戶定義類的實(shí)例。

zip

對你來說,這是***一招,真的很酷。曾經(jīng)需要將兩個(gè)列表合成一個(gè)字典?

zip內(nèi)置函數(shù)接受多個(gè)可重復(fù)對象,并返回元組列表。每個(gè)元組按位置索引對輸入對象的元素進(jìn)行分組。

您也可以通過對對象調(diào)用*zip來“解壓縮”對象。

感謝閱讀!

到這里你已經(jīng)讀完全文,Python的26個(gè)小技巧——希望你從中得到了對下一個(gè)項(xiàng)目有用的東西。

Python是一種非常多樣且適合開發(fā)的語言,所以我肯定有很多東西沒有包括在內(nèi)。

請?jiān)谙旅媪粞裕窒砟阕约鹤钕矚g的Python技巧!

 

責(zé)任編輯:龐桂玉 來源: 今日頭條
相關(guān)推薦

2024-04-09 14:27:39

2024-10-28 08:34:06

2022-07-15 15:30:13

Python技巧

2023-10-26 18:03:14

索引Python技巧

2021-05-07 16:02:54

Python代碼優(yōu)化

2021-06-16 10:50:16

Python代碼優(yōu)化

2022-06-21 09:02:49

python技巧

2024-03-28 14:29:46

JavaScript編程

2024-12-04 15:10:21

2024-01-30 00:40:10

2021-09-06 10:25:27

Python代碼優(yōu)化

2021-07-02 09:45:13

Python優(yōu)化代碼

2011-04-07 16:46:09

Solaris

2020-12-14 08:30:02

JavaScript開發(fā)代碼

2025-09-10 08:23:11

代碼重構(gòu)技巧

2011-07-07 10:21:56

2009-05-04 09:11:28

GoogleChrome瀏覽器

2024-01-08 17:09:07

Python解釋器CPython

2021-03-15 08:13:19

JavaScript開發(fā)代碼

2022-01-04 07:28:05

MySQL SQL 語句數(shù)據(jù)庫
點(diǎn)贊
收藏

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