【python基礎】13-文檔字符串


風格指南

引用自Python文檔 - 編碼風格

  • 使用4-空格縮進砌烁,不用制表符
  • 包裹行讓它們不超過79字符
  • 使用空行分隔函數(shù)罩驻、類和函數(shù)內(nèi)較大的代碼塊
  • 盡量注釋
  • 使用文檔字符串
  • 逗號后、操作符周圍使用空格
  • 統(tǒng)一命名類和函數(shù)
    • 傳統(tǒng)是對類使用駱駝拼寫法,函數(shù)和方法使用小寫和下劃線

風格指南


回文示例

#!/usr/bin/python3

"""
Asks for user input and tells if string is palindrome or not

Allowed characters: alphabets and punctuations .,;:'"-!?
Minimum alphabets: 3 and cannot be all same

Informs if input is invalid and asks user for input again
"""

import re

def is_palindrome(usr_ip):
    """
    Checks if string is a palindrome

    ValueError: if string is invalid

    Returns True if palindrome, False otherwise
    """

    # remove punctuations & whitespace and change to all lowercase
    ip_str = re.sub(r'[\s.;:,\'"!?-]', r'', usr_ip).lower()

    if re.search(r'[^a-zA-Z]', ip_str):
        raise ValueError("Characters other than alphabets and punctuations")
    elif len(ip_str) < 3:
        raise ValueError("Less than 3 alphabets")
    else:
        return ip_str == ip_str[::-1] and not re.search(r'^(.)\1+$', ip_str)

def main():
    while True:
        try:
            usr_ip = input("Enter a palindrome: ")
            if is_palindrome(usr_ip):
                print("{} is a palindrome".format(usr_ip))
            else:
                print("{} is NOT a palindrome".format(usr_ip))
            break
        except ValueError as e:
            print('Error: ' + str(e))

if __name__ == "__main__":
    main()
  • 首個三引號括起的字符串標記了整個程序的文檔字符串
  • 第二個是is_palindrome()函數(shù)特定的文檔字符串
$ ./palindrome.py
Enter a palindrome: as2
Error: Characters other than alphabets and punctuations
Enter a palindrome: "Dammit, I'm mad!"
"Dammit, I'm mad!" is a palindrome

$ ./palindrome.py
Enter a palindrome: a'a
Error: Less than 3 alphabets
Enter a palindrome: aaa
aaa is NOT a palindrome
  • 讓我們看下文檔字符串怎么作為幫助使用
  • 注意文檔字符串是怎么自動格式化的
>>> import palindrome
>>> help(palindrome)

Help on module palindrome:

NAME
    palindrome - Asks for user input and tells if string is palindrome or not

DESCRIPTION
    Allowed characters: alphabets and punctuations .,;:'"-!?
    Minimum alphabets: 3 and cannot be all same

    Informs if input is invalid and asks user for input again

FUNCTIONS
    is_palindrome(usr_ip)
        Checks if string is a palindrome

        ValueError: if string is invalid

        Returns True if palindrome, False otherwise

    main()

FILE
    /home/learnbyexample/python_programs/palindrome.py
  • 也可以直接獲取函數(shù)幫助
>>> help(palindrome.is_palindrome)

Help on function is_palindrome in module palindrome:

is_palindrome(usr_ip)
    Checks if string is a palindrome

    ValueError: if string is invalid

    Returns True if palindrome, False otherwise
  • 測試函數(shù)
>>> palindrome.is_palindrome('aaa')
False
>>> palindrome.is_palindrome('Madam')
True

>>> palindrome.main()
Enter a palindrome: 3452
Error: Characters other than alphabets and punctuations
Enter a palindrome: Malayalam
Malayalam is a palindrome

進一步閱讀

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市胳赌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌匙隔,老刑警劉巖疑苫,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異纷责,居然都是意外死亡捍掺,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門再膳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挺勿,“玉大人,你說我怎么就攤上這事喂柒〔黄浚” “怎么了禾嫉?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長湃番。 經(jīng)常有香客問我,道長吭露,這世上最難降的妖魔是什么吠撮? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮讲竿,結果婚禮上泥兰,老公的妹妹穿的比我還像新娘。我一直安慰自己题禀,他們只是感情好鞋诗,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著迈嘹,像睡著了一般削彬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上秀仲,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天融痛,我揣著相機與錄音,去河邊找鬼神僵。 笑死雁刷,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的保礼。 我是一名探鬼主播沛励,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼炮障!你這毒婦竟也來了目派?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤胁赢,失蹤者是張志新(化名)和其女友劉穎址貌,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體徘键,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡练对,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了吹害。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片螟凭。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖它呀,靈堂內(nèi)的尸體忽然破棺而出螺男,到底是詐尸還是另有隱情棒厘,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布下隧,位于F島的核電站奢人,受9級特大地震影響,放射性物質發(fā)生泄漏淆院。R本人自食惡果不足惜何乎,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望土辩。 院中可真熱鬧支救,春花似錦、人聲如沸拷淘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽启涯。三九已至贬堵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間结洼,已是汗流浹背扁瓢。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留补君,地道東北人引几。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像挽铁,于是被迫代替她去往敵國和親伟桅。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Python是一種對代碼風格很重視的語言叽掘,從縮進就能看出這一點楣铁,Python強調易于理解。最近在負責代碼重構的工作...
    知曰閱讀 10,880評論 1 85
  • 原文鏈接 《Python數(shù)據(jù)分析》(Python for Data Analysis, 2nd Edition)第...
    李紹俊閱讀 8,250評論 0 5
  • 更新時間:2016/5/13 介紹 本文檔所提供的編碼規(guī)范,適用于主要的Python發(fā)行版中組成標準庫的Pytho...
    超net閱讀 5,861評論 0 15
  • # Python 資源大全中文版 我想很多程序員應該記得 GitHub 上有一個 Awesome - XXX 系列...
    aimaile閱讀 26,480評論 6 427
  • 昨天在荔枝上錄了三個節(jié)目浓镜,最后只剩下一個溃列。因為錄好后我回過頭去聽的時候,發(fā)現(xiàn)中間有雜音錄了進去膛薛,是我不仔細听隐。然而已...
    菀蔸閱讀 226評論 0 0