當前位置: 華文星空 > 知識

英語時態這麽多,怎麽樣才能記得牢呢?

2020-05-29知識

相信我,讀完這篇文章,英語時態想記不牢都難。

我之前回答的「如何準確使用英語時態--阿丁的貓」已過5千個贊,成為了知乎英語時態相關內容 最高贊答案 。這次,我在原有答案中補充進了很多幹貨,只為能幫助你徹底解決有關時態的所有疑問。

寫文章不易,畫那麽多圖也不易,請在收藏的同時點一個 哦,謝謝~

以下是本文的目錄:

-- 第一章 什麽是時態

1. 時態中的「時」

2. 時態中的「態」

-- 第二章 動詞的十二類時態

1. 一般式(一般現在時、一般過去時、一般將來時)

2. 現在式(現在進行時、過去進行時、將來進行時)

3. 時態專題1: 一般現在時(do)與現在進行時(am/is/are doing)

4 .完成式(現在完成時、過去完成時、將來完成時)

5. 時態專題2: 一般過去時(did)與現在完成時(have/has done)

6. 時態專題3: 一般過去時(did)與過去完成時(had done)

7.完成進行式(現在完成進行時、過去完成進行時、將來完成進行時)

更多英語學習的幹貨,請關註公眾號「 阿丁的英語課堂

第一章 什麽是時態?

時態是 一個動作發生的「時間」 當時所處的「狀態」。

沒錯,所謂「時」,就是指該動作發生的「時間」;

所謂「態」,就是指該動作在這個時間點的「狀態」。

1. 時態中的「時

我們一般將英語中的時間分為三個階段,即過去Past,現在Now和將來Future,舉幾個例子:

I worked in Shanghai.
(我 過去 在上海工作。)

I work in Shanghai..
(我 現在 在上海工作。)

I will work in Shanghai.
(我 將 在上海工作。)

不難發現,上述三個範例除了動詞形態不同外,它們的其它成分是完全相同的。其中:

worked表示這個動作發生在 過去

work表示這個動作發生在 現在

will work表示這個動作發生在 將來

將前面三個範例中的動作work表示在時間軸中,可得到下圖:

我們只透過改變動詞的形態,就輕松地表明了這個動作所發生的時間。

弄清楚了時態中的「時」,接下來我們將一起了解時態中的「態」。

2. 時態中的「態」

時態中的 狀態 指的是這個動作在某個時間所處於的狀態。我們一般認為每個階段的時間(過去、現在、將來)分別對應四種狀態: 一般式 進行式、完成式、進行完成式。

我們將從下面這個例子開始,一起來討論「現在」這個時間點的四類狀態分別是怎麽樣的。

I work in Shanghai.

為清晰的表示出這四類狀態的具體形式,接下來我們將使用do來代表動詞原形、用did來代表過去式、用done來代表過去分詞、用doing來代表現在分詞。

如上圖所示,四類狀態的第一類為 一般式 simple ),它表示的是「經常發生或頻繁發生的動作」,其具體動詞形式為動詞原形do。例如:

I work in Shanghai.
(我在上海工作。)

上句中使用的就是動詞原型work,表示「我在上海工作」是一個常態化的動作,即:我現在上海工作,而且這個狀態已經持續比較長的時間了。將這個句子描繪到座標軸中得到:

如上圖的空心圓點所示,一般式是由很多個經常發生的相同動作匯集而成的一類狀態。

四類狀態中的第二類為 進行式 (continuous),它表示的是「正在進行的動作」,具體動詞形式為「be動詞 + doing」。例如:

I am working in Shanghai.
(我正在上海工作。)

上句動詞「am working」使用就是進行式,表示的是:「我在上海工作」是一個正在發生的動作。將其表述到座標軸中應為:

從上圖中的灰色矩形可以看出,working這個動作從過去某個時間點就一直持續,而且直到現在還在發生。

四類狀態中的第三類為 完成式 (perfect simple),它表示的是「對一個之前已經結束了的動作的總結」,這類狀態的具體動詞形式為「have/has + done」。

完成式所重視的是該動作所產生的「結果」(即這個動作的完成情況),例如:

I have worked in Shanghai.
(我在上海工作過。)

上句使用是完成式「have worked」,表示「我在上海工作」是一個已經完成了的動作。將其表述到座標軸中應為:

從上圖可以看出,worked這個動作在過去某個時間點或時間段發生過了,而且已經結束了。所以,完成式相當於我站在現在這個時間點對上述動作做回顧和總結,得到的結果是:這個動作已經完成了。

四類狀態中的最後一類為 完成進行式( perfect continuous ), 它表示的是「對一個正在發生動作的總結」,具體動詞形式為「have/has + been + doing」。

從它的形式上可以看出,它是進行式和完成式的一個組合,這類狀態重視的是這個持續動作所產生的「結果」(這個動作的持續時間),例如:

I have been working in Shanghai for 3 years.
(我在上海工作一年了。)

上句使用是完成進行式「have been working」,表示「我在上海工作」產生的結果是「時長有三年時間了」。將其表述到座標軸中應為:

從上圖可以看出,working這個動作直到現在還在發生。所以,完成進行式相當於我站在「現在」這個時間點對上述動作做回顧和總結,得到的結果是:這個動作已經持續三年時間了。

第二章 動詞的十二類時態

如果我們將上述三類時間(過去、現在、將來)和四類狀態(一般式、進行式、完成式、現在完成式)組合,便會得到如下表所示的十二類時態。

那麽,我們就一起來學習這十二類時態的用法吧,學習的順序為:一般式、進行式、完成式、完成進行式。

一般式 表示的是「經常發生或頻繁發生的動作」。

這類狀態與現在、過去、將來這三個時間點分別結合而成三類時態,即: 一般現在時(present simple) 一般過去時(past simple) 一般將來時(future simple)

1. 一般現在時(動詞的形式為:do)

一般現在時的兩個主要功能是:表示 事實或習慣 。例如:

Light travels more quickly than sound.
(光傳播的速度比聲音快。)

His father is a businessman.
(他的父親是一位商人。)

「光傳播的速度比聲音快」是一個放之四海而皆準的客觀事實,而他父親的職業也是一個確定的事實,所以我們在上面兩個例子中使用一般現在時(動詞原形travel和is)表示的這兩個「事實」。

She often drinks coffee.
(她常喝咖啡。)

I get up at six every morning.
(我每天早晨六點鐘起床。)

而上面例子表述的是「她喝咖啡」和「我早上起床」的兩個個人習慣,所以謂語使用動詞原形drink和get。

如果我們將「She often drinks coffee」繪制到時間軸中,則可以得到:

因為一般現在時表示的就是某個經常發生的動作,所以在圖中體現出的就是很多個表示「drink coffee」這個動作的 「空心圓點」 在座標軸上的順序排列。

2. 一般過去時(動詞的形式為:did)

一般過去時用來表示 某個過去時間點發生的動作 ,而且這個動作是在過去就已經結束了。例如:

I watched the movie last week. ①
(我上周看過這個電影。)

上句的謂語watched表示的是動詞watch的過去式。如果我們同樣用 「空心圓點」 來表示這個過去時間點,將句①繪制到時間軸中可得:

由上圖可以看出,「watched the movie」這個動作是發生在過去(Past)的一個時間點,而且這個動作在過去就已經結束了。

更多一般過去時的例子如下所示,其中的was和received表示的是相應動詞的過去式。

He was born in Beijing.
(他出生於北京。)

Simon received a medal for his heroism.
(Simon因他的英勇獲得了一枚獎章 。)

3. 一般將來時(動詞的形式為:will do)

一般將來時用來表示 某個將來時間點會發生的動作 。例如:

Phoebe will live in a modern city. ②
(Phoebe將在大城市生活。)

上句的謂語live表示的是動詞原型。我們同樣用 「空心圓點」 來表示這個將來的時間點,並將句②繪制到時間軸中,可得到:

由上圖可以看出,「live in a modern city」這個動作發生在將來(Future)的某一個時間點。

更多一般將來時的例子如下所示,其中的take和check是動詞原型。

The bellboy will take your luggage to your room.
(服務生會將行李送到你的房間。)

I will check up the figure tomorrow.
(明天我將核對這個數碼。)

進行式 表示的是「正在進行的動作」。

這類狀態與現在、過去、將來這三個時間點分別結合而成三類時態,即: 現在進行時(present continuous)、過去進行時(past continuous)和將來進行時(future continuous)

4. 現在進行時(動詞的形式為:am/is/are doing)

現在進行時用來表示 現在正在進行的動作

I am playing tennis right now. ③
(我正在打網球。)

上句的謂語playing表示的是動詞play的現在分詞形式。由於「正在進行的動作」必定會延續一段時間,所以我們用 「灰色矩形」 來表示進行時,將句③繪制到時間軸中可得到:

由上圖所示,灰色矩形「playing tennis」從某個過去的時間點開始一直延續到了現在(now),所以我們說「I am playing tennis right now」。

更多現在進行時的例子如下所示,其中的listening和making均為現在分詞。

They are listening to the lecturer.
(他們正在聽那位學者講話。)

A group of students are making model planes.
(一組學生正在做模型飛機。)

在這十二類時態中,有些時態是英語學習者非常容易混淆的。所以,本文在講解時態的同時,也會配套一個小專題來比較該類時態與其它相似時態在用法上的區別,目的是回顧前文中學習過的知識,並透過比較的方式來加深各位讀者對該類時態的認知和理解。

在本小節中,我們要一起辨析的是一般現在時和現在進行時在用法上的區別。

Ø 時態專題1:一般現在時(do)與現在進行時(am/is/are doing)

我們一起學過,一般現在時是用來表示「事實或習慣」,例如:

Yolanda comes from Singapore.
(Yolanda來自新加坡。)

因為一個人出生時就擁有了國籍,而Yolanda生來就是新加坡人,這是一個客觀事實,所以動詞使用的是一般現在時。

再比如:

Tom eats a lot.
(Tom吃的很多。)

因為Tom每頓都吃很多,這是他每頓飯的一個習慣動作,所以這句話使用的也是一般現在時。

而現在進行時用來表示「現在正在發生的動作,且這個動作持續時間較為短暫」。

如果我們將上面兩句話改為現在進行時的話,它們的含義會有什麽變化呢?如下例所示:

Yolanda is coming from Singapore.
(Yolanda正從新加坡回來。)

句子的意義變為強調Yolanda從新加坡回來的這個短暫的動作。那她是不是就是新加坡人呢?這句話裏已經找不到任何線索。

Tom is eating a lot.
(Tom正在吃很多東西。)

這句話也變為表述Tom正在吃很多東西的這個動作。那他是不是每頓都吃這麽多呢?不知道。

可以這樣說,我們在描述一個長期固定的動作的時候,會使用一般現在時。而在描述一個短期且正在發生動作的時候,會使用現在進行時。

這裏做一個小測試,請各位讀者判斷下面句子中時態的用法是否正確:

John is playing football.
(John會踢球。)

The price of chicken goes up this month.
(這個月雞肉的價格在上漲。)

I am driving fast.
(我開車很快。)

Watch out! A lorry comes.
(小心!一輛卡車過來了。)

答案是:上面的四個句子都是錯誤的。

第一個句子意圖講述的是一個客觀事實,即John現在會踢球,以後也會踢球,所以這句話應使用一般現在時:

John plays football.

第二個句子中有一個時間狀語this month,可以知道這句話表述的是一個最近發生的短期動作,所以時態應該使用現在進行時:

The price of chicken is going up this month.

第三個句子表述的是我開車的一個習慣,只要我坐到了駕駛位就會把車開得很快,所以時態應該使用一般現在時:

I drive fast.

第四個句子表述的是臨時的一個緊急狀況,所以時態應該使用現在進行時:

Watch out! A lorry is coming.

5. 過去進行時(動詞的形式為:was/were doing)

過去進行時用來表示 某個過去時間點正在進行的動作

They were watching TV when a stranger suddenly rushed in. ④
(當一個陌生人突然沖進來的時候,他們正在看電視。)

一般來說,我們會在同一個句子中明確的表示出這個過去的時間點,比如上句中的「when a stranger suddenly rushed in」。如果我們同樣用 「灰色矩形」 來表示此時態,並將句④繪制到時間軸中可得到:

由上圖所示,空心圓點表示「when a stranger suddenly rushed in」這個過去時間點,其正處於灰色矩形「they were watching TV」的右邊邊界上,表示的是這個突然出現的情況打斷了他們原來持續進行的動作。也就是說,從這個時間點開始他們停止了看電視。

更多過去進行時的例子如下所示,其中的playing和talking是現在分詞,過去的時間點則是分別由「when the doorbell rang」和「hours ago」明確表示了出來。

Emily was playing the piano when the doorbell rang.
(當門鈴響的時候,Emily正在彈鋼琴。)

He was talking about his brother hours ago.
(幾小時前,他正在談論他哥哥。 )

6. 將來進行時(動詞的形式為:will be doing)

將來進行時用來表示 在某個將來時間點正在進行的動作 ,這類動作一般是事先計劃好,而且一定會發生的。

We will be flying at 30 000 feet in five minutes. ⑤
(五分鐘後,我們就會翺翔在三萬英尺的高空了。)

與過去將來時相似,我們一般也會在同一個句子中明確表示出這個將來的時間點,比如上句中的「in five minutes」。我們用 「灰色矩形」 來表示此時態,將句⑤繪制到時間軸中,可以得到:

由上圖所示,我們用空心圓點表示「in five minutes」這個將來時間點,其正好位於灰色矩形「We will be flying at 30 000 feet」的左邊框上,表示的是:從這個時刻開始,他們就開始翺翔在三萬英尺的高空了。

更多將來進行時的例子如下所示,其中的lying和doing是現在分詞,將來的時間點則是分別由「by this time tomorrow」和「during the weekend」明確表示出來。

By this time tomorrow, I will be lying on the beach.
(明天的這個時候,我就會躺在沙灘上了。)

Tom will be doing my homework during the weekend.
(周末期間Tom一定是在做作業。 )

完成式表示的是「站在某一時間點,對這個時間點之前發生的動作作總結」。

這類狀態與現在、過去、將來這三個時間點分別結合而成三類時態,即: 現在完成時(present perfect)、過去完成時(past perfect)、將來完成時(future perfect)

7. 現在完成時(動詞的形式為:have / has done)

現在完成時用來表示 處於現在(now)這個時間點,對這個時間點之前發生的一個或一系列動作的總結 。例如:

I have watched the movie three times. ⑥
(我看過三遍這個電影。)

上句中的watched為動詞watch的過去分詞形式。因為完成式是對之前發生事情的一個總結,所以我們用 「向左的方括弧」 來表示完成式。將句⑥繪制到時間軸中可得:

由上圖所示,由於「watched the movie」這個動作在過去發生了三次,如果我們處於現在(now)這個時間點來總結這三次動作,即會得到「I have watched the movie three times」的結論。

另外,我們一般用現在完成時來表示一個過去動作所產生的「結果」,而忽略這個動作發生的時間,例如下例中的「has had」和「have finished」:

Nina has had a wonderful meal.
(Nina已經美餐一頓了。)

I have finished my homework already.
(我已經完成了作業了。)

上面兩個範例表示的就是動作的結果,即「Nina已經美餐一頓了」和「我已經完成了作業了」。至於Nina吃飯的時間或是我作業完成的時間,這些資訊並不十分重要,所以就被忽略掉了。

因為現在完成時和一般過去時表示的都是過去發生的動作,所以很多同學總是不確定到底什麽時候該使用現在完成時,而什麽時候該使用一般過去時。

因此,本章的第二個專題討論的就是這兩類時態在用法上的區別。

Ø 時態專題2:一般過去時(did)與現在完成時(have/has done)

一般過去時用來表示的是「 某個過去發生的動作,且現在這個動作已經結束了。 」例如:

Shelly lived in Japan.
(Shelly曾住在日本。)

I was a doctor.
(我曾是一名醫生。)

上面兩個例子中的動詞均為一般過去時,表示的就是這些動作是在過去發生的,即:現在Shelly已經不住在日本了,而我也不再是一名醫生了。

而現在完成時用來表示的是「 對一個過去發生動作作總結,而且這個過去發生動作(或是這個動作的影響)一直延續到了現在 」,例如:

Shelly has lived in Japan for 2 years.
(Shelly住在日本兩年了。)

I have been a doctor since 2010.
(我從2010年就是一名醫生了。)

上面兩個例子中的動詞為現在完成時,表示的就是這些動作從某個過去時間點一直延續到了現在,即:Shelly現在還住在日本,而我也還是一名醫生。

請各位讀者快速判斷下句應該使用lost還是have lost:

I lost/have lost my wallet a week ago.
(一星期前,我搞丟了錢包。)

我們從句中的a week ago就能知道這句話描述的是一個過去的動作,所以應該選擇一般過去時lost,即:

I lost my wallet a week ago.

假如直至現在(now)這個時間點我還是沒有找到錢包,也就是說雖然「丟錢包」這個動作到現在仍有影響,此時我們就可以用完成時來總結,如下所示:

I have lost my wallet. (√)
(我已經把錢包搞丟了。)

但如果我昨天已經在沙發底下找到了這個錢包,這時「丟錢包」這件動作對現在已經沒有影響,我們就不能再用完成式來總結這個動作了,所以下句是錯誤的:

I have lost my wallet. (×)

另外,如果我們重視的是一個動作的結果,則應該一般使用現在完成時;而如果我們重視的是這個動作發生的時間,則應該使用一般過去時,例如:

My sister has finished her homework.
(我妹妹已經寫完了作業。)

My sister finished her homework an hour ago.
(我妹妹一小時前寫完了作業。)

比如媽媽只是想知道妹妹有沒有完成了作業,也就是只關註該動作是否完成,這時我就應該用第一句話(現在完成時)來回答媽媽的提問;而如果媽媽想了解的是妹妹的作業做了多長時間,也就是動作發生的時間,這時我就應該回答第二句話(一般過去時)。

8. 過去完成時(動詞的形式為:had done)

過去完成時用來表示 站在某個過去的時間點,對這個時間點之前發生的一個或一系列動作的總結

When they reached there, the ship had set off. ⑦
(當他們到達那裏的時候,船已經開了。)

如果一個句子中有兩個發生在過去的動作,我們會將發生比較靠前的動作時態改為過去完成時,來表明兩個動作的先後順序,如句⑦表示的是「the ship set off」這個動作發生在「they reached there」之前。

所以,我們也稱過去完成時為「 過去的過去 」。

我們同樣用 「向左的方括弧」 表示該時態,將句⑦繪制到時間軸中可得:

由上圖所示,該句相當於站在「they reached there」這個過去的時間點,對這個時間點之前發生的動作「the ship set off」做一個總結,便得到了「the ship had set off」的結論。

更多過去完成時的例子如下所示,其中的begun和lived為過去分詞:

The movie had begun when we got to the cinema.
(當我們到達電影院時,電影已經開始了。)

Mr. Harrison had lived in the Mediterranean for many years before he returned to England.
(在Harrison返回英國之前,他已經在地中海生活了很多年了。)

Ø 時態專題3:一般過去時(did)與過去完成時(had done)

在一句話中,有時會存在兩個發生在過去的動作,比如下句中的「I arrived home」和「Tom left」:

When I arrived home, Tom left.
(當我到家時,Tom離開了。)

我們將上句繪制在時間軸上可以得到:

從圖中可以看出,上句兩個動作發生順序是:「I arrived home」這發生在「Tom left」之前。

此時,如果我想將上面兩個動作的順序調換,即「Tom left」發生在「I arrived home」之前,要做怎樣覆寫呢?

這裏就需要隆重推出過去完成時了。

因為一般過去時表示的是「 過去發生的動作 」,而過去完成時表示的是「 過去發生動作之前所發生的動作 」,即「 過去的過去 」。所以我們可以將上句覆寫為:

When I arrived home, Tom had left.
(當我到家的時候,Tom已經離開了。)

我們再將上句繪制在時間軸上,可以得到:

可以發現,動作發生順序變成了「Tom left」在「I arrived home」之前了。

總而言之,如果要明確表示兩個過去動作發生的先後順序,我們會用一般過去時來表述較先發生的動作,而用過去完成時來表述較後發生的動作。

同樣的道理,我們也可以用過去完成時來表示「某個過去的動作發生在一個過去時間點之前」,比如:

The library had been opened at 8 this morning.
(圖書館在早上八點前就開門了。)

上句就明確表示出「the library was opened」發生在今天早上8點之前,將其繪制到時間軸中可以得到:

9. 將來完成時(動詞的形式為:will have done)

將來完成時用來表示 站在某個將來的時間點,對這個時間點之前的一個或一系列動作的總結

By July, Michael will have got two college degrees. ⑧
(到七月份,Michael就已經拿到兩個大學學位了。)

在使用將來完成時的時候,我們一般會將這個將來的時間點明確表示出來,如句⑧中的「by July」。如果將句⑧繪制到時間軸中,則可以得到:

我們站在現在(now)這個時間點來看,或許Michael已經拿到了兩個學位、或許拿到了一個學位、也或許她還一個學位都沒有拿到,其實都不重要。重要的是將來完成時所總結的結果:「到七月份,Michael就已經拿到兩個大學學位了」

更多將來完成時的例子如下所示,其中的taught和learned為過去分詞,兩個將來的時間點則分別由「by the end of this year」和「before she moves to China」點明:

By the end of this year, I will have taught English for 15 years.
(到今年年底,我教英語就滿十五年了。)

She will have learned Chinese before she moves to China.
(在她搬到中國前,她就會學會中文了。)

完成進行式是完成式與進行式的結合,表示的是「對一個正在進行動作的總結」。這類狀態總結的內容就是這個動作已經發生的時間,一般與for和since連用。

這類狀態與現在、過去、將來這三個時間點分別結合而成三類狀態,即: 現在完成進行時(present perfect continuous)、過去完成進行時(past perfect continuous)、將來完成進行時(future perfect continuous)

10. 現在完成進行時(動詞的形式為:have / has been doing)

現在完成進行時用來表示 對一個現在正在進行動作的總結

Tom has been playing football for two hours. ⑨
(Tom已經踢了兩個小時的足球了。)

如句⑥所示,我們用現在完成進行時來總結一個正在進行的動作「playing football」,最後得到了這個動作已經持續了「two hours」的結論。

如果用 「灰色矩形 」來表示進行時,而用 「向左的方括弧」 來表示完成時,將句⑨繪制到時間軸中可得到:

如上圖所示,相當於我們站在現在(now)這個時間點,對當時正在進行的動作「playing football」展開總結,於是得到了「Tom has been playing football for two hours」的結論。

更多現在完成進行時的例子如下所示:

Simon have been working on the project for several years.
(Simon已經做了好幾年這方面的工作了。)

I have been waiting for this day since I was a boy.
(從我還是一個小男孩開始,我就一直在等待這一天了。)

11. 過去完成進行時(動詞的形式為:had been doing)

過去完成進行時用來表示 站在某個過去的時間點,對這個時間點正在進行動作的總結

I had been cleaning my room the whole morning when she came.⑩
(當他來的時候,我已經打掃了一早上的房間了。)

上句中的「when she came」點明了這個過去的時間點。我們將句⑩繪制到時間軸中可以得到:

如上圖所示,相當於我們站在「when she came」這個過去的時間點,並對這個時間點正在進行的動作「cleaning my room」作一個總結,於是就得到了「I had been cleaning my room the whole morning」的結論。

更多過去完成進行時的例子如下所示,其中的「by the time we arrived at the tennis hall」和「when allowed to enter the room」分別點明了兩句話中過去的時間點:

The players had been playing for 20 minutes by the time we arrived at the tennis hall.
(當我們到達網球館時,球員們已經打了20分鐘的球了。)

We had been waiting for two hours outside when allowed to enter the room.
(當我們獲準進入那個房間的時候,已經在外面等了整整兩小時了。)

12. 將來完成進行時(動詞的形式為:will have been doing)

將來完成進行時用來表示 站在某個將來的時間點,對這個時間點正在進行動作的總結

I will have been doing the drawing for 5 hours at 11 pm. ⑪
(到晚上11點,我就連續畫圖五個小時了。)

上句中的「at 11 pm」點明了這個將來時間點,我們將句⑪繪制到時間軸中可以得到:

如上圖所示,相當於我們站在一個將來的時間點11 pm,對這個時間點正在進行的動作「doing the drawing」作一個總結,於是就得到了「I will have been doing the drawing for five hour」的結論。

更多將來完成進行時的例子如下所示,其中的「by this summer」和「by September」分別點明了兩句話中將來的時間點:

By this summer, he will have been training horses for 10 years.
(到這個夏天,他訓練馬匹就有10年了。)

By September the play will have been running for three months.
(到九月份,這出戲就連演三個月了。)

至此,12類常用時態就都介紹完了,希望上述內容能對大家有所幫助。

寫文章不易,畫圖也不易,求點個贊~~

P.S. 如果你想要在短時間(3天左右)內徹底搞定英語語法,建議看看我的新書【一看就懂的英語語法書】(豆瓣9.9分):