日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
9種你不知道的Python3功能

由于Python EOL,一些開(kāi)發(fā)人員已開(kāi)始將其Python版本從2轉(zhuǎn)換為3。 最著名的更改之一是Python 3中的print() 函數(shù)替換了Python 2中的print函數(shù)。但是,如果在print關(guān)鍵字之后添加空格,則括號(hào)會(huì)在Python 2中起作用,因?yàn)榻忉屍鲿?huì)將其視為表達(dá)式 。

創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),龍游網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:龍游等地區(qū)。龍游做網(wǎng)站價(jià)格咨詢:18982081108

以下是一些罕見(jiàn)特征的說(shuō)明,這些特征只能在Python 3中找到,目的是快速解決Python問(wèn)題。

所有示例均使用Python 3.8.0進(jìn)行編碼。

[[341679]]

1. 枚舉

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

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

當(dāng)確切值微不足道時(shí),您可以使用自動(dòng)值來(lái)代替。

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

 
 
 
  1. for fruit in Fruit: 
  2.     print(fruit) 
  3.  -> Fruit.APPLE 
  4. -> Fruit.ORANGE 
  5. -> Fruit.GUAVA 

最低要求Python版本:3.4

2. 類型提示

相對(duì)于動(dòng)態(tài)而言,靜態(tài)打字是計(jì)算機(jī)語(yǔ)言中的熱門(mén)話題,每個(gè)人對(duì)此都有自己的見(jiàn)解。 我將允許查看者考慮何時(shí)編寫(xiě)類型。 但是,我覺(jué)得您必須了解Python 3支持類型提示。

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

最低要求Python版本:3.5

3. Pathlib

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

 
 
 
  1. from pathlib import Path 
  2. root = Path('blog_new_folder') 
  3. print(root) 
  4. # blog_new_folder 
  5. path = root / 'new_program' 
  6. print(path.resolve()) 
  7. # /home/vivekcoder/Workspace/My_Programming/Medium-Articles/python3_uncommon_features/blog_new_folder/new_program 

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

最低要求Python版本:3.4

4. F-Strings

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

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

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

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

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

F字符串允許使用最少的語(yǔ)法將表達(dá)式集成到字符串文字中。 應(yīng)當(dāng)注意,f-Strings實(shí)際上是運(yùn)行時(shí)表達(dá)式,而不是固定值。

最低要求Python版本:3.6

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

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

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

下面是一個(gè)斐波那契函數(shù)的示例,我們知道該函數(shù)將從緩存中受益,因?yàn)橥ㄟ^(guò)遞歸,它可以多次執(zhí)行相同的工作。

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

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

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

最低要求Python版本:3.2

6. 擴(kuò)展的可重復(fù)拆包

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

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

最低要求Python版本:3.0

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

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

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

 
 
 
  1. price = 50_000 
  2.  print(f'Price: {price}') 
  3.  # Price: 50000 
  4. hexa_val = 0xABCD_EFD9 
  5.  print(f'Decimal equivalent: {hexa_val}') 
  6.  # Decimal equivalent: 2882400217 
  7. bin_ary = 0b_0010_0110 
  8.  print(f'Decimal: {bin_ary}') 
  9.  # Decimal: 38 

最低要求Python版本:3.6

8. 賦值表達(dá)式-“海象”運(yùn)算符

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

 
 
 
  1. birds = [‘owl’, ‘hen’, ‘duck’, ‘parrot’] 
  2. for bird in birds:    if (len_bird := len(bird)) > 4: 
  3.         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ù)類幾乎沒(méi)有什么限制,并且由于裝飾器會(huì)自動(dòng)生成諸如__init __()和__repr __()之類的獨(dú)特方法,因此可用于減少樣板代碼。 官方提案將其列為“具有默認(rèn)值的可變命名元組”。

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

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

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

最低要求Python版本:3.7

有關(guān)數(shù)據(jù)類的進(jìn)一步說(shuō)明,請(qǐng)參閱Python 3官方文檔。

關(guān)鍵要點(diǎn)

沒(méi)有神奇的秘訣,只有細(xì)心,勤勞的工作,以及足夠的耐心和實(shí)踐。 每天,您需要學(xué)習(xí)新事物并享受工作,因?yàn)檫@是您成長(zhǎng)的唯一途徑。

我相信上述見(jiàn)解可以為您顯示至少一個(gè)以前未認(rèn)識(shí)到的Python 3附加功能,并鼓勵(lì)您開(kāi)始編寫(xiě)更簡(jiǎn)潔,更直觀的代碼。

謝謝閱讀!

原文:https://medium.com/better-programming/9-python-3-features-you-might-not-use-yet-fade13932a3e

 


網(wǎng)站標(biāo)題:9種你不知道的Python3功能
文章位置:http://www.5511xx.com/article/djgghjh.html