Python3.6中那些很酷的特性

来源:https://www.cnblogs.com/pythonedu/archive/2018/06/05/9142001.html
-Advertisement-
Play Games

離 python2 退休還有 702 天,Python3.7 也將在 6 月份發佈正式版,你還記得 3.6 有哪些酷炫的特性嗎?來回顧一下。 可讀性更強的數字字面值 Python代碼在可讀性上做到了極致,被稱為是可執行偽代碼。然而,它還在不斷地改進,比如這個可讀性更好的數字字面值語法,就是方便程式員 ...


離 python2 退休還有 702 天,Python3.7 也將在 6 月份發佈正式版,你還記得 3.6 有哪些酷炫的特性嗎?來回顧一下。

可讀性更強的數字字面值

Python代碼在可讀性上做到了極致,被稱為是可執行偽代碼。然而,它還在不斷地改進,比如這個可讀性更好的數字字面值語法,就是方便程式員能以一種 “for humans ” 的方式閱讀和理解數字。你現在可以給數字添加下劃線,並按照你喜歡的方式對它們進行分組        。這對於二進位或十六進位數字或者是大數來說非常方便:

>>> six_figures  = 100_000
>>> six_figures
100000

>>> a = 10_00_0
>>> a
10000

>>> error  = 0xbad_c0ffee
>>> error
50159747054

>>> flags  = 0b_0111_0101_0001_0101
>>> flags
29973

請記住,這種改變只是語法層面上的變化,是一種在源代碼中以不同方式表示數字文字的方法而已。在虛擬機編譯成位元組碼的時候不會有任何變化,你可以在 PEP515 中瞭解到關於它的更多信息。

新的字元串格式化方法

對字元串格式化操作有兩種常用的方法,第一個是使用 “%” 操作符,第二個是使用 format 函數。

“%” 操作符

>>> s = "%s is %d" % ('two', 2)
>>> s
'two is 2'

format 函數

>>> s = "{fruit} is {color}".format(fruit='apple', color='red')
>>> s
'apple is red'

顯然,format 函數要比 % 操作符的可讀性要好,在Python 3.6 增加了第三種格式化字元串方法,稱為 Formatted String Literals ,簡稱 f字元串。

>>> name = 'Bob'
>>> f'Hello, {name}!'
'Hello, Bob!'

你還可以在字元串內使用嵌入式的 Python 表達式,例如:

>>> a = 5
>>> b = 10
>>> f'Five plus ten is {a + b} and not {2 * (a + b)}.'
'Five plus ten is 15 and not 30.'

這個看起來很酷,其實這種操作在模版引擎中早就有這樣的特性存在,只不過因為用的人多了,就引入到了語言標準中。

除了這些,還可以操作數字

# 精度
>>> PI = 3.141592653
>>> f"Pi is {PI:.2f}"
>>> 'Pi is 3.14'

>>> error = 50159747054
#以16進位格式化
>>> f'Programmer Error: {error:#x}'
'Programmer Error: 0xbadc0ffee'

#以二進位格式化
>>> f'Programmer Error: {error:#b}'
'Programmer Error: 0b101110101101110000001111111111101110'

你可以在 PEP498 中瞭解更多信息

變數註釋

“動態語言一時爽,代碼重構火葬場”,雖有危言聳聽嫌疑,但的確因為動態語言的靈活性也帶來代碼維護困難的麻煩,我們不得不通過文檔註釋來對參數進行說明,而有時又因為業務需求的變更導致代碼修改後沒有同步文檔註釋造成實際代碼和文檔不一致的情況,如果能像靜態語言一樣,讓程式員在語法層面就是就被限制在規則範圍內做事,就不會出問題了,所以,像Java這樣的語言做工程項目是有優勢的。

從Python 3.5開始,可以將類型註解添加到函數和方法中:

>>> def my_add(a: int, b: int) -> int:
...    return a + b

這個函數表示,a 和 b 兩個參數必須是 int 類型,函數的返回值也是 int。

在語義方面沒有任何改變—CPython解釋器只是將類型記錄為類型註釋,但不做任何方式類型檢查。類型檢查純粹是可選的,你需要一個像Mypy這樣的工具來幫助你。

可以在PEP 526中瞭解更多關於這一變化的信息。

當然,這個版本不止這麼一點點變化,還有

  • 非同步生成器的語法

  • 非同步推導式語法

  • 更快的字典結構,記憶體減少20%到25%

 python學習交流群:125240963

本文翻譯自:https://dbader.org/blog/cool-new-features-in-python-3-6


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、動態代理 1.1、代理模式 什麼是代理模式及其作用? Proxy Pattern(即:代理模式),23種常用的面向對象軟體的設計模式之一。 代理模式的定義:為其他對象提供一種代理以控制對這個對象的訪問。 在某些情況下,一個對象不適合或者不能直接引用另一個對象,而代理對象可以在客戶端和目標對象之間 ...
  • 前言 從去年的3月份起我就在開始讀《Effective Java 第二版》,當然,我讀的是中文版的;可能是我理解能力還不行,對於書中的內容總是感覺理解困難;就拿第一章的內容「創建和銷毀對象」來說吧,這是我讀的次數最多的一章,想必原因大家也是明白的,每次我讀不下去的時候,我就從頭開始讀,所以,現在我對 ...
  • 1.首先安裝mysql 具體教程可以參考https://blog.csdn.net/zhouzezhou/article/details/52446608 註意安裝產品的時候記得選擇MySQL Connector C,如圖 2.安裝好mysql之後,就開始配置,點擊項目->點擊項目屬性,如圖: 3. ...
  • 也許是最近模擬題打多了的緣故,我發現自己漸漸變得比較毒瘤起來,當然這也是有一定的好處的,因為從中我也學到了一些處理字元串的正確姿勢,今天我們就來講一 講如何用函數getline來讀入一整行字元串進行處理。或者他的一些變體。 首先我們先需要知道為什麼我們要學習這個函數,是這樣的,相信大家都應該知道以前 ...
  • Spring Boot 2.0 的推出又激起了一陣學習 Spring Boot 熱,就單從我個人的博客的訪問量大幅增加就可以感受到大家對學習 Spring Boot 的熱情,那麼在這麼多人熱衷於學習 Spring Boot 之時,我們自己也在思考: Spring Boot 為什麼帶來了這麼大的變革。 ...
  • c++文件的讀寫 1.文本方式的寫文件 3.二進位方式的寫文件 c++ include include using namespace std; int main(){ int ar[] = {11,232,123123,1223,455,4,4,5,56,4,33}; ofstream ofile ...
  • 一.首先在啟動類重寫SpringBootServletInitializer里的configure方法: 二.將springboot項目打成war包,使用maven打包需要修改pom文件,將預設的打為jar包修改成war: 也可以使用idea將構建好的項目打包,如圖: 三.和別的Spring項目一樣 ...
  • Java中的成員變數和局部變數一:成員變數;二:局部變數;三:成員變數與局部變數的區別; ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...