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

資訊專欄INFORMATION COLUMN

SICP Python 描述 第二章 使用對(duì)象構(gòu)建抽象 2.1 引言

phoenixsky / 2264人閱讀

摘要:對(duì)象表示信息,但是同時(shí)和它們所表示的抽象概念行為一致。通過(guò)綁定行為和信息,對(duì)象提供了可靠獨(dú)立的日期抽象。名稱來(lái)源于實(shí)數(shù)在中表示的方式浮點(diǎn)表示。另一方面,對(duì)象可以表示很大范圍內(nèi)的分?jǐn)?shù),但是不能表示所有有理數(shù)。

2.1 引言

來(lái)源:2.1 Introduction

譯者:飛龍

協(xié)議:CC BY-NC-SA 4.0

在第一章中,我們專注于計(jì)算過(guò)程,以及程序設(shè)計(jì)中函數(shù)的作用。我們看到了如何使用原始數(shù)據(jù)(數(shù)值)和原始操作(算術(shù)運(yùn)算),如何通過(guò)組合和控制來(lái)形成復(fù)合函數(shù),以及如何通過(guò)給予過(guò)程名稱來(lái)創(chuàng)建函數(shù)抽象。我們也看到了高階函數(shù)通過(guò)操作通用計(jì)算方法來(lái)提升語(yǔ)言的威力。這是編程的本質(zhì)。

這一章會(huì)專注于數(shù)據(jù)。數(shù)據(jù)允許我們通過(guò)使用已經(jīng)獲得的計(jì)算工具,表示和操作與世界有關(guān)的信息。脫離數(shù)據(jù)結(jié)構(gòu)的編程可能會(huì)滿足于探索數(shù)學(xué)特性,但是真實(shí)世界的情況,比如文檔、關(guān)系、城市和氣候模式,都擁有復(fù)雜的結(jié)構(gòu),它最好使用復(fù)合數(shù)據(jù)類型來(lái)表現(xiàn)。歸功于互聯(lián)網(wǎng)的高速發(fā)展,關(guān)于世界的大量結(jié)構(gòu)信息可以免費(fèi)從網(wǎng)上獲得。

2.1.1 對(duì)象隱喻

在這門課的開始,我們區(qū)分了函數(shù)和數(shù)據(jù):函數(shù)執(zhí)行操作,而數(shù)據(jù)被操作。當(dāng)我們?cè)跀?shù)據(jù)中包含函數(shù)值時(shí),我們承認(rèn)數(shù)據(jù)也擁有行為。函數(shù)可以像數(shù)據(jù)一樣被操作,但是也可以被調(diào)用來(lái)執(zhí)行計(jì)算。

在這門課中,對(duì)象作為我們對(duì)數(shù)據(jù)值的核心編程隱喻,它同樣擁有行為。對(duì)象表示信息,但是同時(shí)和它們所表示的抽象概念行為一致。對(duì)象如何和其它對(duì)象交互的邏輯,和編碼對(duì)象值的信息綁定在一起。在打印對(duì)象時(shí),它知道如何以字母和數(shù)字把自己拼寫出來(lái)。如果一個(gè)對(duì)象由幾部分組成,它知道如何按照要求展示這些部分。對(duì)象既是信息也是過(guò)程,它們綁定在一起來(lái)展示復(fù)雜事物的屬性、交互和行為。

Python 中所實(shí)現(xiàn)的對(duì)象隱喻具有特定的對(duì)象語(yǔ)法和相關(guān)的術(shù)語(yǔ),我們會(huì)使用示例來(lái)介紹。日期(date)就是一種簡(jiǎn)單對(duì)象。

>>> from datetime import date

date的名字綁定到了一個(gè)類上面。類表示一類對(duì)象。獨(dú)立的日期叫做這個(gè)類的實(shí)例,它們可以通過(guò)像函數(shù)那樣在參數(shù)上調(diào)用這個(gè)類來(lái)構(gòu)造,這些參數(shù)描述了實(shí)例。

>>> today = date(2011, 9, 12)

雖然today從原始數(shù)值中構(gòu)造,它的行為就像日期那樣。例如,將它與另一個(gè)日期相減會(huì)得到時(shí)間差,它可以通過(guò)調(diào)用str來(lái)展示為一行文本:

>>> str(date(2011, 12, 2) - today)
"81 days, 0:00:00"

對(duì)象擁有屬性,它們是帶有名字的值,也是對(duì)象的一部分。Python 中,我們使用點(diǎn)運(yùn)算符來(lái)訪問(wèn)對(duì)象屬性:

 . 

上面的求值為對(duì)象,是對(duì)象的某個(gè)屬性名稱。

不像我們之前見過(guò)的名稱,這些屬性名稱在一般的環(huán)境中不可用。反之,屬性名稱是點(diǎn)運(yùn)算符之前的對(duì)象實(shí)例的特定部分。

>>> today.year
2011

對(duì)象也擁有方法,它是值為函數(shù)的屬性。在隱喻上,對(duì)象“知道”如何執(zhí)行這些方法。方法從它們的參數(shù)和對(duì)象中計(jì)算出它們的結(jié)果。例如,todaystrftime方法接受一個(gè)指定如何展示日期的參數(shù)(例如%A表示星期幾應(yīng)該以全稱拼寫)。

>>> today.strftime("%A, %B %d")
"Monday, September 12"

計(jì)算strftime的返回值需要兩個(gè)輸入:描述輸出格式的字符串,以及綁定到today的日期信息。這個(gè)方法使用日期特定的邏輯來(lái)產(chǎn)生結(jié)果。我們從不會(huì)說(shuō) 2011 年九月十二日是星期一,但是知道一個(gè)人的工作日是日期的一部分。通過(guò)綁定行為和信息,Python 對(duì)象提供了可靠、獨(dú)立的日期抽象。

點(diǎn)運(yùn)算符在 Python 中提供了另一種組合表達(dá)式。點(diǎn)運(yùn)算符擁有定義好的求值過(guò)程。但是,點(diǎn)運(yùn)算符如何求值的精確解釋,要等到我們引入面向?qū)ο缶幊痰耐暾妒?,在幾?jié)之后。

即使我們還不能精確描述對(duì)象如何工作,我們還是可以開始將數(shù)據(jù)看做對(duì)象,因?yàn)?Python 中萬(wàn)物皆對(duì)象。

2.1.2 原始數(shù)據(jù)類型

Python 中每個(gè)對(duì)象都擁有一個(gè)類型。type函數(shù)可以讓我們查看對(duì)象的類型。

>>> type(today)

目前為止,我們學(xué)過(guò)的對(duì)象類型只有數(shù)值、函數(shù)、布爾值和現(xiàn)在的日期。我們也碰到了集合和字符串,但是需要更深入地學(xué)習(xí)它們。有許多其它的對(duì)象類型 -- 聲音、圖像、位置、數(shù)據(jù)連接等等 -- 它們的多數(shù)可以通過(guò)組合和抽象的手段來(lái)定義,我們?cè)谶@一章會(huì)研究它們。Python 只有一小部分內(nèi)建于語(yǔ)言的原始或原生數(shù)據(jù)類型。

原始數(shù)據(jù)類型具有以下特性:

原始表達(dá)式可以計(jì)算這些類型的對(duì)象,叫做字面值。

內(nèi)建的函數(shù)、運(yùn)算符和方法可以操作這些對(duì)象。

像我們看到的那樣,數(shù)值是原始類型,數(shù)字字面值求值為數(shù)值,算術(shù)運(yùn)算符操作數(shù)值對(duì)象:

>>> 12 + 3000000000000000000000000
3000000000000000000000012

實(shí)際上,Python 包含了三個(gè)原始數(shù)值類型:整數(shù)(int)、實(shí)數(shù)(float)和復(fù)數(shù)(complex)。

>>> type(2)

>>> type(1.5)

>>> type(1+1j)

名稱float來(lái)源于實(shí)數(shù)在 Python 中表示的方式:“浮點(diǎn)”表示。雖然數(shù)值表示的細(xì)節(jié)不是這門課的話題,一些intfloat對(duì)象的高層差異仍然很重要。特別是,int對(duì)象只能表示整數(shù),但是表示得更精確,不帶有任何近似。另一方面,float對(duì)象可以表示很大范圍內(nèi)的分?jǐn)?shù),但是不能表示所有有理數(shù)。然而,浮點(diǎn)對(duì)象通常用于近似表示實(shí)數(shù)和有理數(shù),舍入到某個(gè)有效數(shù)字的數(shù)值。

擴(kuò)展閱讀。下面的章節(jié)介紹了更多的 Python 原始數(shù)據(jù)類型,專注于它們?cè)趧?chuàng)建實(shí)用數(shù)據(jù)抽象中的作用。Dive Into Python 3 中的原始數(shù)據(jù)類型一章提供了所有 Python 數(shù)據(jù)類型的實(shí)用概覽,以及如何高效使用它們,還包含了許多使用示例和實(shí)踐提示。你現(xiàn)在并不需要閱讀它,但是要考慮將它作為寶貴的參考。

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

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

相關(guān)文章

  • SICP Python 描述 第三章 計(jì)算機(jī)程序的構(gòu)造和解釋 3.1 引言

    摘要:為通用語(yǔ)言設(shè)計(jì)解釋器的想法可能令人畏懼。但是,典型的解釋器擁有簡(jiǎn)潔的通用結(jié)構(gòu)兩個(gè)可變的遞歸函數(shù),第一個(gè)求解環(huán)境中的表達(dá)式,第二個(gè)在參數(shù)上調(diào)用函數(shù)。這一章接下來(lái)的兩節(jié)專注于遞歸函數(shù)和數(shù)據(jù)結(jié)構(gòu),它們是理解解釋器設(shè)計(jì)的基礎(chǔ)。 3.1 引言 來(lái)源:3.1 Introduction 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 第一章和第二章描述了編程的兩個(gè)基本元素:數(shù)據(jù)和函數(shù)之間的...

    v1 評(píng)論0 收藏0
  • SICP Python描述 1.1 引言

    摘要:另一個(gè)賦值語(yǔ)句將名稱關(guān)聯(lián)到出現(xiàn)在莎士比亞劇本中的所有去重詞匯的集合,總計(jì)個(gè)。表達(dá)式是一個(gè)復(fù)合表達(dá)式,計(jì)算出正序或倒序出現(xiàn)的莎士比亞詞匯集合。在意圖上并沒有按照莎士比亞或者回文來(lái)設(shè)計(jì),但是它極大的靈活性讓我們用極少的代碼處理大量文本。 1.1 引言 來(lái)源:1.1 Introduction 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 計(jì)算機(jī)科學(xué)是一個(gè)極其寬泛的學(xué)科。全球的分布...

    xumenger 評(píng)論0 收藏0
  • SICP Python 描述 2.2 數(shù)據(jù)抽象

    摘要:示例有理數(shù)的算術(shù)有理數(shù)可表示為整數(shù)的比值,并且它組成了實(shí)數(shù)的一個(gè)重要子類。有理數(shù)的值需要兩部分來(lái)描述。這里的重要概念是,通過(guò)將有理數(shù)表示為整數(shù)的比值,我們能夠完全避免近似問(wèn)題。返回有理數(shù)的分子。 2.2 數(shù)據(jù)抽象 來(lái)源:2.2 Data Abstraction 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 由于我們希望在程序中表達(dá)世界中的大量事物,我們發(fā)現(xiàn)它們的大多數(shù)都具有...

    Joonas 評(píng)論0 收藏0
  • SICP Python 描述 1.2 編程元素

    摘要:程序用于在編程社群的成員之間交流這些想法。在編程中,我們處理兩種元素函數(shù)和數(shù)據(jù)。在中,我們可以使用賦值語(yǔ)句來(lái)建立新的綁定,它包含左邊的名稱和右邊的值。例如,它并不能處理賦值語(yǔ)句。這些圖解的必要部分是函數(shù)的表示。 1.2 編程元素 來(lái)源:1.2 The Elements of Programming 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 編程語(yǔ)言是操作計(jì)算機(jī)來(lái)執(zhí)行任務(wù)...

    CoorChice 評(píng)論0 收藏0
  • SICP Python 描述 2.3 序列

    摘要:序列不是特定的抽象數(shù)據(jù)類型,而是不同類型共有的一組行為。不像抽象數(shù)據(jù)類型,我們并沒有闡述如何構(gòu)造序列。這兩個(gè)選擇器和一個(gè)構(gòu)造器,以及一個(gè)常量共同實(shí)現(xiàn)了抽象數(shù)據(jù)類型的遞歸列表。 2.3 序列 來(lái)源:2.3 Sequences 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 序列是數(shù)據(jù)值的順序容器。不像偶對(duì)只有兩個(gè)元素,序列可以擁有任意(但是有限)個(gè)有序元素。 序列在計(jì)算機(jī)科學(xué)中...

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

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

0條評(píng)論

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