成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

流暢的python讀書筆記-第一章Python 數(shù)據(jù)模型

FullStackDeveloper / 3052人閱讀

摘要:第一章數(shù)據(jù)類型隱式方法利用快速生成字典方法方法通過下標(biāo)找元素自動(dòng)支持切片操作可迭代方法與如果是一個(gè)自定義類的對(duì)象,那么會(huì)自己去調(diào)用其中由你實(shí)現(xiàn)的方法。若返回,則會(huì)返回否則返回。一個(gè)對(duì)象沒有函數(shù),解釋器會(huì)用作為替代。

第一章 python數(shù)據(jù)類型 1 隱式方法

利用collections.namedtuple 快速生成字典

import collections


Card = collections.namedtuple("Card", ["rank", "suit"])

class FrenchDeck:
    ranks = [str(n) for n in range(2, 11)] + list("JQKA")
    suits = "spades diamonds clubs hearts".split()

    def __init__(self):
        self._cards = [Card(rank, suit) for suit in self.suits for rank in self.ranks]

    def __len__(self):
        return len(self._cards)

    def __getitem__(self, position):
        return self._cards[position]
1.1 __getitem__方法

deck = FrenchDeck()

>>> deck[0]
Card(rank="2", suit="spades")
>>> deck[-1]
Card(rank="A", suit="hearts")

__getitem__方法

通過下標(biāo)找元素

自動(dòng)支持切片(slicing)操作

可迭代

1.2 __len__方法 與 len(my_object)

如果my_object 是一個(gè)自定義類的對(duì)象,那么 Python 會(huì)自己去調(diào)用其中由 你實(shí)現(xiàn)的 len 方法。

Python 內(nèi)置的類型,比如列表(list)、字符串(str)、 字節(jié)序列(bytearray)等,那么 CPython
會(huì)抄個(gè)近路,__len__ 實(shí)際 上會(huì)直接返回 PyVarObject 里的 ob_size 屬性。

1.3 其他方法 特殊方法的調(diào)用是隱式的 for i in x: 這個(gè)語句

背后其實(shí)用的是 iter(x)
而這個(gè)函數(shù)的背后則是 x.__iter__() 方法。

1.4 不要自己想當(dāng)然地隨意添加特殊方法

比如 foo 之類的
因?yàn)殡m然現(xiàn)在這個(gè)名字沒有被 Python 內(nèi)部使用,以后就不一定了

一個(gè)輪子 隨機(jī)抽牌
>>> from random import choice
>>> choice(deck)
Card(rank="3", suit="hearts")
>>> choice(deck)
Card(rank="K", suit="spades")
>>> choice(deck)
Card(rank="2", suit="clubs")
2 字符串表示形式 reprstr

__repr__和__str__這兩個(gè)方法都是用于顯示的

__str__是面向用戶的,而__repr__面向程序員。

一個(gè)對(duì)象沒有 str 函數(shù),解釋器會(huì)用 repr 作為替代。

3 算術(shù)運(yùn)算符

add 和 __mul__,類帶來了 + 和 * 這兩個(gè)算
術(shù)運(yùn)算符。

4 布爾值

列表項(xiàng)目bool(x) 的背后是調(diào)用x.__bool__() 的結(jié)果;

如果不存在 bool 方法,那么 bool(x) 會(huì)嘗試調(diào)用 x.__len__()。

若返回 0,則 bool 會(huì)返回 False;否則返回True。

5 其他隱式方法請(qǐng)見 書1.3 特殊方法一覽 小總結(jié)

collections.namedtuple 快速生成字典

__getitem__方法

通過下標(biāo)找元素

自動(dòng)支持切片(slicing)操作

可迭代


len()

len(my_obj )自定義類的對(duì)象,自定義實(shí)現(xiàn)的 len 方法。

python內(nèi)置類型,通過內(nèi)部類型的屬性直接取得

repr__和__str

__repr__和__str__這兩個(gè)方法都是用于顯示的

__str__是面向用戶的,而__repr__面向程序員。

一個(gè)對(duì)象沒有 str 函數(shù),解釋器會(huì)用 repr 作為替代。

from random import choice 一個(gè)隨機(jī)選取的輪子

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41537.html

相關(guān)文章

  • 流暢python讀書筆記-一章Python 數(shù)據(jù)模型

    摘要:第一章數(shù)據(jù)類型隱式方法利用快速生成類方法方法通過下標(biāo)找元素自動(dòng)支持切片操作可迭代方法與如果是一個(gè)自定義類的對(duì)象,那么會(huì)自己去調(diào)用其中由你實(shí)現(xiàn)的方法。若返回,則會(huì)返回否則返回。一個(gè)對(duì)象沒有函數(shù),解釋器會(huì)用作為替代。 第一章 python數(shù)據(jù)類型 1 隱式方法 利用collections.namedtuple 快速生成類 import collections Card = collec...

    tomener 評(píng)論0 收藏0
  • 流暢python讀書筆記-第十章-序列修改、散列和切片

    摘要:例如,的序列協(xié)議只需要和兩個(gè)方法。任何類如,只要使用標(biāo)準(zhǔn)的簽名和語義實(shí)現(xiàn)了這兩個(gè)方法,就能用在任何期待序列的地方。方法開放了內(nèi)置序列實(shí)現(xiàn)的棘手邏輯,用于優(yōu)雅地處理缺失索引和負(fù)數(shù)索引,以及長度超過目標(biāo)序列的切片。 序列的修改、散列和切片 接著造Vector2d類 要達(dá)到的要求 為了編寫Vector(3, 4) 和 Vector(3, 4, 5) 這樣的代碼,我們可以讓 init 法接受任...

    cpupro 評(píng)論0 收藏0
  • 流暢python讀書筆記-第九章-符合Python風(fēng)格對(duì)象

    摘要:以便于用戶理解的方式返回對(duì)象的字符串表示形式。函數(shù)會(huì)調(diào)用函數(shù),對(duì)來說,輸出的是一個(gè)有序?qū)?。此外,還有用于支持內(nèi)置的構(gòu)造函數(shù)的方法。可散列實(shí)現(xiàn)了方法,使用推薦的異或運(yùn)算符計(jì)算實(shí)例屬性的散列值私有屬性最好用命名規(guī)則來實(shí)現(xiàn)這種方式有好有壞 絕對(duì)不要使用兩個(gè)前導(dǎo)下劃線,這是很煩人的自私行為。——Ian Bicking 對(duì)象表示形式 repr()  以便于開發(fā)者理解的方式返回對(duì)象的字符串表示形式...

    fai1017 評(píng)論0 收藏0
  • 【Java并發(fā)編程藝術(shù)】一章讀書筆記

    摘要:前言并發(fā)編程的目的是讓程序跑的更快,但并不是啟動(dòng)更多的線程,這個(gè)程序就跑的更快。盡可能降低上下文切換的次數(shù),有助于提高并發(fā)效率。死鎖并發(fā)編程中的另一挑戰(zhàn)是死鎖,會(huì)造成系統(tǒng)功能不可用。 前言 并發(fā)編程的目的是讓程序跑的更快,但并不是啟動(dòng)更多的線程,這個(gè)程序就跑的更快。有以下幾種挑戰(zhàn)。 挑戰(zhàn)及方案 上下文切換 單核CPU上執(zhí)行多線程任務(wù),通過給每個(gè)線程分配CPU時(shí)間片的方式來實(shí)現(xiàn)這個(gè)機(jī)制。...

    馬忠志 評(píng)論0 收藏0
  • Python 面向?qū)ο缶幊讨改?讀書筆記

    摘要:可以賦值對(duì)象的生命周期主要是有創(chuàng)建初始化銷毀。顯示而非隱式對(duì)于每個(gè)方法,都應(yīng)當(dāng)顯示的制定要初始化的變量。每當(dāng)創(chuàng)建一個(gè)對(duì)象,會(huì)創(chuàng)建一個(gè)空對(duì)象,然后調(diào)用該對(duì)象的函數(shù),提供了初始化的操作。以點(diǎn)為例作為說明。 第一部分 用特殊方法實(shí)現(xiàn)Python風(fēng)格的類 為了實(shí)現(xiàn)更好的可擴(kuò)展性,Python語言提供了大量的特殊方法,它們大致分為以下幾類。 特性訪問 可調(diào)用對(duì)象 集合 數(shù)字 上下文 迭代器 ...

    cncoder 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

FullStackDeveloper

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<