亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

Python 3.0 新加入了什么特性

發布時間:2021-06-18 16:53:25 來源:億速云 閱讀:139 作者:chen 欄目:編程語言

這篇文章主要講解了“ Python 3.0 新加入了什么特性”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“ Python 3.0 新加入了什么特性”吧!


僅限關鍵字參數

Python 3.0 首次引入了僅限關鍵字參數參數的概念。在這之前,不可能指定一個只通過關鍵字傳遞某些參數的 API。這在有許多參數,其中一些參數可能是可選的函數中很有用。

請看一個特意設計的例子:

def show_arguments(base, extended=None, improved=None, augmented=None):    print("base is", base)    if extended is not None:        print("extended is", extended)    if improved is not None:        print("improved is", improved)    if augmented is not None:        print("augmented is", augmented)

當閱讀調用該函數的代碼時,有時很難理解發生了什么:

show_arguments("hello", "extra")     base is hello    extended is extra show_arguments("hello", None, "extra")     base is hello    improved is extra

雖然可以用關鍵字參數來調用這個函數,但這明顯不是最好的方法。相反,你可以將這些參數標記為僅限關鍵字:

def show_arguments(base, *, extended=None, improved=None, augmented=None):    print("base is", base)    if extended is not None:        print("extended is", extended)    if improved is not None:        print("improved is", improved)    if augmented is not None:        print("augmented is", augmented)

現在,你不能用位置參數傳入額外的參數:

show_arguments("hello", "extra")    ---------------------------------------------------------------------------     TypeError                                 Traceback (most recent call last)     <ipython-input-7-6000400c4441> in <module>    ----> 1 show_arguments("hello", "extra")        TypeError: show_arguments() takes 1 positional argument but 2 were given

對該函數的有效調用更容易預測:

show_arguments("hello", improved="extra")    base is hello    improved is extra

nonlocal

有時,函數式編程的人根據編寫累加器的難易程度來判斷一種語言。累加器是一個函數,當它被調用時,返回目前為止發給它的所有參數的總和。

在 3.0 之前,Python 的標準答案是:

class _Accumulator:    def __init__(self):        self._so_far = 0    def __call__(self, arg):        self._so_far += arg        return self._so_far def make_accumulator():    return _Accumulator()

雖然我承認有些啰嗦,但這確實有效:

acc = make_accumulator()print("1", acc(1))print("5", acc(5))print("3", acc(3))

這樣做的輸出結果將是:

1 15 63 9

在 Python 3.x 中,nonlocal 關鍵字可以用少得多的代碼實現同樣的行為。

def make_accumulator():    so_far = 0    def accumulate(arg):        nonlocal so_far        so_far += arg        return so_far    return accumulate

雖然累加器是人為的例子,但使用 nonlocal 關鍵字使內部函數擁有具有狀態的的能力是一個強大的工具。

擴展析構

想象一下,你有一個 CSV 文件,每一行由幾個元素組成:

  • 第一個元素是年份

  • 第二個元素是月

  • 其他元素是該月發表的全部文章數,每天一個條目

請注意,最后一個元素是 文章總數,而不是 每天發表的文章。例如,一行的開頭可以是:

2021,1,5,8,10

這意味著在 2021 年 1 月,第一天發表了 5 篇文章。第二天,又發表了三篇文章,使總數達到 8 篇。第三天,又發表了兩篇文章。

一個月可以有 28 天、30 天或 31 天。提取月份、日期和文章總數有多難?

在 3.0 之前的 Python 版本中,你可能會這樣寫:

year, month, total = row[0], row[1], row[-1]

這是正確的,但它掩蓋了格式。使用擴展析構,同樣可以這樣表達:

year, month, *rest, total = row

這意味著如果該格式改為前綴了一個描述,你可以把代碼改成:

_, year, month, *rest, total = row

而不需要在每個索引中添加 1

感謝各位的閱讀,以上就是“ Python 3.0 新加入了什么特性”的內容了,經過本文的學習后,相信大家對 Python 3.0 新加入了什么特性這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

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

AI

海伦市| 佳木斯市| 青海省| 连山| 东乌| 巫溪县| 泌阳县| 东丽区| 呼图壁县| 胶南市| 麻阳| 东海县| 鄯善县| 全南县| 城固县| 辽宁省| 莒南县| 疏附县| 襄垣县| 辉南县| 晋江市| 平江县| 临海市| 湖州市| 鄂伦春自治旗| 察雅县| 全州县| 临颍县| 阳新县| 芜湖市| 河曲县| 门头沟区| 左权县| 安顺市| 五河县| 体育| 紫阳县| 南康市| 玉溪市| 当雄县| 万载县|