成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

那些被忽視的Python核心功能...

譯文 精選
開發 前端
在開發領域如此內卷的情況下,要完成一個現代化項目,需要一個人來掌控全局,他不需要是各種技術的資深專家,但需要熟悉各種技術。對于一個團隊特別是互聯網企業來說,全局性思維的人真的不可多得。

作者 | Erik van de Ven

編譯 | 王瑞平

最實用、最簡單、最優美...近些年,大家學習Python的熱潮從未消退;無論是數據分析還是科學計算都少不了Python的身影。

Python也沒有讓人失望,Java用100行代碼寫出的程序,用Python十行就能搞定!

當你要說Hello World時,C語言、Java、Python分別是這樣的:

圖片圖片

一目了然,Python只需一行!

雖然Python非常容易學習,但是許多實踐者只觸及到它的表面,而忽視了深入研究這門語言更高級、更強大的方面,而正是這些被忽視的方面使它如此獨特和強大。

                                                                  ——節選自《Fluent Python》

(攝影:Stefan Steinbauer)(攝影:Stefan Steinbauer)

如果你的目標是成為一名經驗豐富的Python程序員,你一定想了解的更多。因此,讓我們共同了解下你沒聽過的Python核心功能,先從最簡單的排列與組合開始...

功能一:排列與組合

你可以組合不同的for循環,輸出排列、組合和笛卡爾積等。

1.排列

舉個例子:當你在排列函數中輸入{[1,2,3],2}時,會輸出如下結果:

圖片圖片

2.組合

當你在組合函數中輸入(‘ABC’,2)時,輸出的排列如下:

圖片圖片

3.笛卡爾積

笛卡爾積是數學中的一種運算,用于求兩個集合中所有可能的有序對。

當我們用笛卡爾積計算Python時,結果是這樣的:

圖片圖片

功能二:可變的參數默認值

現在,開始增加難度...

當你每次調用fib_memo函數卻不為memo參數賦值時,它將自動使用定義該函數時的原始值,公式和代碼如下:

圖片圖片

由于在Python中,默認參數是可變的,你也可以像在“for循環”中一樣在單個腳本中多次執行函數,每次執行都能自動增加要計算的斐波那契數,而不會超過“最大遞歸深度”限制,因為memo可持續擴展。

*重要提示:

請記住,盡管可變的默認參數(如上所述)可以減少代碼,但它可能產生難以解決的bug。有些人將其判定為“陷阱”,而不是功能。因此,你仍需要堅持Python中所透露出的禪意:顯式優于隱式。

就像Hacker news中指出的那樣:if n not in memo比if not n in memo更容易讀取,但是二者輸出結果相同。

功能三:海象運算符

下面,再來講講比較有趣的“海象運算符”...

“海象運算符”是在Python 3.8版本中引入的賦值表達式運算符,用于在表達式中進行賦值操作,其符號為“:=”。這個符號有點像海象的眼睛和獠牙(因此被稱為「海象運算符」)。

圖片圖片

它可以被翻譯成英文“whale calculus”,是一種基于單詞語法規則的特殊運算符,用于定義表達式和一系列操作步驟的語言建模方式。

圖片圖片

顯然,用Python,賦值和檢查返回值是否包含真值變得更容易了:

圖片圖片

功能四:單星號(*)和雙星號(**)

使用(*)可以在將參數或關鍵字參數傳遞給函數之前解壓縮,讓我們在如下代碼中使用:

圖片圖片

當調用sum_numbers函數而不解包my_numbers時,會引發"TypeError",因為該函數需要輸入兩個單獨的參數才能輸出結果。

但是,通過使用(*),我們可以解壓縮my_numbers函數中的值,并將它們作為單獨的參數進行傳遞,從而產生正確的輸出。

這種解包技術不僅適用于元組和列表,也適用于字典。

當關鍵字作為參數時,我們可以使用雙星號(**),以如下代碼為例:

圖片圖片

除解壓縮序列以將其作為參數傳遞給函數外,你還可以使用它來創建新序列,例如:

圖片圖片

在此過程中,原始數字列表不受影響,并且你還將擁有一個new_list_numbers 變量,它包括相同列表的副本。

圖片圖片

功能五:any and any

any和all都是python中的內置函數,它們對可迭代對象(如,列表、元組或集合)進行操作,并根據可迭代對象中的元素以Boolean運算的形式返回,語句如下:

圖片圖片

你可以將any和all函數與列表推導式結合使用,列表推導式返回一個可迭代對象并將其作為參數傳遞給all函數:

圖片圖片

或任意函數:

圖片圖片

下表列出可迭代對象中用any和all函數賦值的輸出差異:

圖片圖片

功能六:交換變量

用Python,你可以將參數打包((=)號右邊)和解包((=)號左邊)結合起來,并利用此功能交換變量:

圖片圖片

功能七:str vs repr

在字符串處理方面,Python中的str()和repr()有所不同。str()將值轉化為前端樣式文本,repr()是后端底層代碼。

·str()函數:將值轉化為適于人閱讀的形式,面向用戶,返回值具有可讀性、可理解性較強。

·repr()函數:將對象轉化為供解釋器讀取的形式,面向開發人員,返回值表示python解釋器內部的含義。

下圖是一個很好的例子:

圖片圖片

如你所見,repr()簡單將時間排列為字符串后輸出;如果你想確定當前變量是否包含字符串或時間對象,無法借此識別。

str()提供了變量持有的實際對象信息,這些信息在調試過程中非常有價值。

功能八:擴展的迭代解包

迭代解包可應用到任何可迭代對象上,唯一的硬性要求是:被迭代對象中的元素數量必須與接受這些元素的元組空檔數一致,也可以使用星號 * 表示忽略多余的元素。

這種方式的優點在于:更好賦值、更好獲取迭代對象中的某個值(一般的迭代對象分為:元組,列表,字典,字符串等)。

如果你想獲得序列的第一個和最后一個值,需要輸入如下代碼:

圖片圖片

更換輸入和輸出語句后同樣可行...

圖片圖片

其它組合也同樣適用...

功能九:多個上下文管理器

通常,我們習慣一次性使用一個上下文管理器,比如,當你打開一個程序文件,需要輸入如下代碼:

圖片圖片

但是,在Python中,用一行語句就能打開多個文件。如果你想將行寫入其它文件,用Python語句就很容易實現,例如:

圖片圖片

功能十:調試程序

為達到調試目的,我們可以在文件中輸出大量變量或可以簡單使用Python調試器(pdb),它可以幫我們設置斷點:

圖片圖片

程序將在斷點處停止,你可以在該斷點處獲取任何變量以檢查其值或該特定斷點是否存在。當程序遇到斷點時,可使用如下幾個命令:

  • n或next:執行下一行。
  • s或step:進入功能調用。
  • c或continue:繼續執行,直到下一個斷點。
  • l或list:顯示當前代碼的上下文。
  • p <expression>或pp <expression>:打印表達式的值。
  • b <line>或break <line>:在指定的行上設置新斷點。
  • h或help:在使用pdb時提供幫助。
  • q或quit:退出調試器并終止程序。

功能十一:collections模塊中的Counter

collections模塊中的Counter類提供了一種便捷的方法,可以對可迭代對象中的元素進行計數:

圖片圖片

功能十二:使用下劃線的兩種情況

在Python中有兩種需要用到下劃線:多位數分隔或排除不需要的值。

1.排除不需要的值

下劃線 _ 可被用作排除不需要的值:

圖片圖片

2.多位數分隔符

在處理多位數時,可以使用下劃線 (_) 作為視覺分隔符,能增強可讀性。這個功能是在Python3.6中被引入的。

圖片圖片

用戶:簡單、實用但范圍有限

圖片圖片

在reddit上,我們找到了關于用戶關于本篇文章的181條評論:

圖片圖片

正如文章開頭所述,他們認為:“用Python調試出的程序確實簡單、實用。”

話雖如此,有些用戶也提出了質疑:“Pythonic的過濾器和映射方式更具可讀性,但是范圍有限。”

但這一點也不影響用戶對Python的喜愛!

寫在最后:Python是你成為全棧工程師的必備武器

前端開發、后端開發、項目測試...如果你想成為一名合格的全棧工程師,Python是你不可或缺的“武器”。

圖片圖片

在開發領域如此內卷的情況下,要完成一個現代化項目,需要一個人來掌控全局,他不需要是各種技術的資深專家,但需要熟悉各種技術。對于一個團隊特別是互聯網企業來說,全局性思維的人真的不可多得。

責任編輯:武曉燕 來源: 51CTO技術棧
相關推薦

2024-02-29 07:48:55

Python編程語言上下文管理器

2017-02-08 09:51:27

JavaScript細節

2017-08-15 17:09:31

Linux命令

2009-12-03 14:22:57

2010-01-28 10:11:18

IT金飯碗

2014-04-10 16:33:48

iOS 7新特性

2022-04-12 08:09:22

Nodejs前端面試題

2009-11-17 16:14:28

無線路由器

2022-11-29 12:11:25

2020-09-06 08:26:59

Python 3開發代碼

2009-11-09 09:57:39

交換機路由器

2012-11-28 15:53:16

災難恢復

2023-10-24 18:05:00

2009-11-18 13:11:29

PHP核心

2010-01-27 17:38:58

Windows Emb

2011-08-17 10:04:13

vSphere 5虛擬化

2010-01-22 15:45:57

局域網交換機

2009-10-29 16:41:23

2017-01-15 15:13:37

Android性能優化優化點

2017-11-27 12:08:10

后端服務spring mvc項目
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久精品在线 | 欧美日韩国产一区二区三区 | 欧美三区在线观看 | 国产精品久久久久久久久久 | 久久精品国产亚洲 | 成人欧美一区二区三区 | 特a毛片| 亚洲综合色视频在线观看 | 国产亚洲精品综合一区 | 亚洲高清在线播放 | a级在线免费观看 | 国产一区二区三区在线免费 | 国产精品国产三级国产aⅴ无密码 | 亚洲国产成人精品女人久久久野战 | 中文字幕一区二区三区在线观看 | 午夜三级视频 | 一区二区三区四区视频 | 91精品国产色综合久久 | 97视频人人澡人人爽 | 成人高清网站 | 免费xxxx大片国产在线 | 99精品久久 | 亚洲欧美一区二区三区1000 | 亚洲精品国产一区 | 欧美午夜一区 | 亚洲成人精品久久 | 精品亚洲91 | 一区二区三区高清不卡 | 91精品国产99 | 亚洲精品欧美一区二区三区 | 精品亚洲一区二区三区 | 色视频在线播放 | 色噜噜亚洲男人的天堂 | 一区欧美 | 99pao成人国产永久免费视频 | 激情的网站 | 久久婷婷国产香蕉 | 夜夜草导航 | 久久久这里只有17精品 | 午夜欧美| 国产精品婷婷 |