<span id="7ztzv"></span>
<sub id="7ztzv"></sub>

<span id="7ztzv"></span><form id="7ztzv"></form>

<span id="7ztzv"></span>

        <address id="7ztzv"></address>

            第 17 章 動態函數

            17.1. 概覽

            我想談談名詞復數。還有,返回其它函數的函數,高級的正則表達式和生成器 (Generator)。生成器是 Python 2.3 新引入的。但首先還是讓我們先來談談如何生成名詞復數。

            如果你還沒有看過 第 7 章 正則表達式,現在是個絕佳的機會。這章中假定你已理解了正則表達式的基礎內容并迅速深入更高級的應用。

            英語是一個吸收很多外來語而令人瘋掉的語言,把單數名詞變成復數的規則則是復雜而又多變的。有規則,有例外,更有例外的例外。

            如果你在英語國家長大或是在正規學校學習了英語,你可能對下面的基本規則很熟悉:

            1. 如果一個詞以 S, X 或 Z 結尾,加 ES。如 “Bass” 變成 “basses”,“fax” 變成 “faxes”,還有 “waltz” 變成 “waltzes”。
            2. 如果一個詞以發音的 H 結尾,加 ES;若以不發音的 H 結尾,加 S。什么是發音的 H?和其他字母混合在一起發出一個你可以聽到的聲音。那么,“coach” 變成 “coaches” ,“rash” 變成 “rashes”,因為在讀出來時,你可以聽到 CH 和 SH 的聲音。但是,“cheetah” 變成 “cheetahs”,因為 H 不發音。
            3. 如果一個詞以發 I 音的 Y 結尾,把 Y 變成 IES;如果 Y 與元音搭配在一起發出其他聲音則只添加 S。因此,“vacancy” 變成 “vacancies”,但 “day” 變成 “days”。
            4. 如果一切規則都不適用,就只添加 S 并祈禱不會錯。

            (我知道有很多例外情況,比如:“Man” 變成 “men”,“woman” 變成 “women”,但是,“human” 卻變成 “humans”。“Mouse” 變成 “mice”,“louse” 變成 “lice”,但是,“house” 卻變成 “houses”。“Knife” 變成 “knives”,“wife” 變成 “wives”,但是 “lowlife” 卻變成 “lowlifes”。更不要說那些復數根本就不需要變化的詞了,比如 “sheep”, “deer” 和 “haiku”。)

            其他的語言當然完全不同。

            讓我們來設計一個復數化名詞的模塊吧!從英語名詞開始,僅考慮上面的四種規則,但是記得你將來需要不斷添加規則,更可能最后添加進更多的語言。

            <span id="7ztzv"></span>
            <sub id="7ztzv"></sub>

            <span id="7ztzv"></span><form id="7ztzv"></form>

            <span id="7ztzv"></span>

                  <address id="7ztzv"></address>

                      亚洲欧美在线