溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python3的功能有哪些

發(fā)布時間:2021-10-28 15:23:19 來源:億速云 閱讀:153 作者:iii 欄目:編程語言

本篇內(nèi)容主要講解“Python3的功能有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Python3的功能有哪些”吧!

1. 枚舉

Python 3允許您以簡單的方式在Enum類中編寫枚舉。 枚舉由類語法組成,可簡化讀取和寫入的過程,但沒有任何結(jié)構(gòu)-代碼不易產(chǎn)生。

from enum import Enum, auto class Fruit(Enum):    APPLE = auto()    ORANGE = auto()    GUAVA = auto()print(Fruit.APPLE) # Fruit.APPLE

當確切值微不足道時,您可以使用自動值來代替。

枚舉是與特定的固定值關(guān)聯(lián)的符號項(成員)的集合。 在枚舉中,可以通過命名以及單獨迭代枚舉來區(qū)分符號名稱。

for fruit in Fruit:     print(fruit)  -> Fruit.APPLE -> Fruit.ORANGE -> Fruit.GUAVA

最低要求Python版本:3.4

2. 類型提示

相對于動態(tài)而言,靜態(tài)打字是計算機語言中的熱門話題,每個人對此都有自己的見解。 我將允許查看者考慮何時編寫類型。 但是,我覺得您必須了解Python  3支持類型提示。

def fruits_word(line: str) -> bool:   return "fruit" in line test = fruits_word("I love to eat fresh fruits") print(test)# True

最低要求Python版本:3.5

3. Pathlib

F字符串令人難以置信,但是諸如文件路徑之類的字符串都有其自己的庫,這些庫使操作它們變得更加容易。  Pathlib模塊簡化了各種復雜的情況,并且還優(yōu)化了一些簡單的情況。 作為使用文件路徑的便捷抽象,Python 3提供了pathlib。

from pathlib import Path root = Path('blog_new_folder') print(root) # blog_new_folder path = root / 'new_program' print(path.resolve()) # /home/vivekcoder/Workspace/My_Programming/Medium-Articles/python3_uncommon_features/blog_new_folder/new_program

我覺得這篇文章會啟發(fā)您在需要處理Python文件時使用Python Pathlib模塊。

最低要求Python版本:3.4

4. F-Strings

在沒有字符串的情況下,很難以任何編程語言執(zhí)行任何操作,并且您希望使用結(jié)構(gòu)化的方法來使用字符串來保持高效。  大多數(shù)使用Python的人都喜歡使用format方法。

import datetime name = "Leijie" activity = "writing Toutiao article" time = datetime.date(2020, 8, 15)  message = 'My name is {}, I completed an activity {} on {}.'.format(name, activity, time)  print(message) # My name is Leijie, I completed an activity writing Toutiao article  on 2020-08-15.

除了格式外,Python 3還提供了一種通過f字符串插值字符串的通用方法。 上面的帶有f字符串的代碼如下所示:

import datetime name = "Leijie" activity = "writing Toutiao article" time = datetime.date(2020, 8, 15) message = f'My name is {name}, I completed an activity {activity} on {time:%A, %B %d, %Y}.'  print(message)# My name is Leijie, I completed an activity writing Toutiao article   on Saturday, August 15, 2020.

與利用字符串連接或格式化字符串相比,F(xiàn)-Strings創(chuàng)建的代碼甚至更易于理解和使用。

F字符串允許使用最少的語法將表達式集成到字符串文字中。 應當注意,f-Strings實際上是運行時表達式,而不是固定值。

最低要求Python版本:3.6

5. 內(nèi)置LRU緩存

如果最新的呼叫是傳入呼叫的最佳預測器,則LRU(最近最少使用)的緩存性能會很好。 (例如,最常見的新聞服務(wù)器帖子每天都會變化)。  緩存的大小限制意味著,如果沒有像Web服務(wù)器這樣的長時間運行的循環(huán),緩存就不會擴展。

定義用戶功能時,它必須是可調(diào)用的。 這使得在Python 3中可以將lru_cache裝飾器直接應用于用戶函數(shù)。

下面是一個斐波那契函數(shù)的示例,我們知道該函數(shù)將從緩存中受益,因為通過遞歸,它可以多次執(zhí)行相同的工作。

import time def fibon(number: int) -> int:     if number == 0: return 0     if number == 1: return 1     return fibon(number-1) + fibon(number-2) start = time.time()fibon(20) print(f'Duration: {time.time() - start}s') -> Duration: 0.007005214691162109s

在這里,我們可以利用lru-cache對其進行配置。 (這種優(yōu)化方法稱為備忘錄)。  裝飾器涵蓋了一個具有備忘錄的可調(diào)用函數(shù),該函數(shù)可存儲最近調(diào)用的最大大小。

from functools import lru_cache @lru_cache(maxsize=512) def fib_memoization(number: int) -> int:     if number == 0: return 0     if number == 1: return 1         return fib_memoization(number-1) + fib_memoization(number-2) start = time.time()fib_memoization(20) print(f'Duration: {time.time() - start}s') -> Duration: 4.341516078231e-09s

最低要求Python版本:3.2

6. 擴展的可重復拆包

我將允許代碼在下面回應。 一個示例描述了功能,該功能優(yōu)于1000個單詞:

x, *y, z = range(4) print(x, y, z) # 0 [1, 2] 3 python_version, file_name, topic, *output = "python3.0 hello.py betterprogramming 1 2 3 4".split() print(python_version) print(file_name) print(topic) print(output) # python3.0 # hello.py# betterprogramming# ['1', '2', '3', '4'] a, b, c, *d = range(7) print(b, d) # 1 [3, 4, 5, 6]

最低要求Python版本:3.0

有關(guān)擴展的可迭代解壓縮的更多信息,請參見此處的官方Python 3文檔。

7. 數(shù)字文字中的下劃線

Python 3.6提供了一種令人興奮的方法,可以通過強調(diào)數(shù)字來幫助閱讀數(shù)字文字。 它可以用于描述例如數(shù)千個,十六進制和二進制數(shù)。

price = 50_000  print(f'Price: {price}')  # Price: 50000 hexa_val = 0xABCD_EFD9  print(f'Decimal equivalent: {hexa_val}')  # Decimal equivalent: 2882400217 bin_ary = 0b_0010_0110  print(f'Decimal: {bin_ary}')  # Decimal: 38

最低要求Python版本:3.6

8. 賦值表達式-“海象”運算符

在Python的最新版本中,引入了walrus運算符,該運算符可對表達式進行變量分配。  如果您打算稍后在代碼中引用外觀,則可能會有所幫助,并且可以節(jié)省一行或兩行代碼。

birds = [‘owl’, ‘hen’, ‘duck’, ‘parrot’] for bird in birds:    if (len_bird := len(bird)) > 4:         print(f’A bird “{bird}” consists of “{len_bird}”, letters’)# A bird “parrot” consists of “6”, letters

最低要求Python版本:3.8

9. 數(shù)據(jù)類

Python 3提供的數(shù)據(jù)類幾乎沒有什么限制,并且由于裝飾器會自動生成諸如__init __()和__repr  __()之類的獨特方法,因此可用于減少樣板代碼。 官方提案將其列為“具有默認值的可變命名元組”。

class Item_list:     def __init__(self, name: str, perunit_cost: float, quantity_available: int = 0):         self.name = name         self.perunit_cost = perunit_cost         self.quantity_available = quantity_available             def total_cost(self) -> float:         return self.perunit_cost * self.quantity_available book = Item_list("better programming.", 50, 2) x = book.total_cost()print(x)# 100 print(book)# <__main__.Item_list object at 0x00000052DB9D2A48>

使用@dataclass裝飾器,您可以編寫相同的實現(xiàn):

from dataclasses import dataclass @dataclassclass Item_list:    name: str    perunit_cost: float    quantity_available: int = 0     def total_cost(self) -> float:         return self.perunit_cost * self.quantity_available     book = Item_list("better programming.", 50, 2) x = book.total_cost()print(x)# 100 print(book) # Item_list(name='better programming.', perunit_cost=50, quantity_available=2)

最低要求Python版本:3.7

到此,相信大家對“Python3的功能有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI