精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

五個良好的Python編程習慣,助你成為Python高手!

開發 前端
今天筆者將向大家分享5個良好的Python編程習慣,大牛認證,通過不斷實踐,助你寫出更Pythonic的代碼,讓你向Python大師之路更進一步。

今天筆者將向大家分享5個良好的Python編程習慣,大牛認證,通過不斷實踐,助你寫出更Pythonic的代碼,讓你向Python大師之路更進一步。

1. 常用if __name__ == '__main__'

假設我們在 module.py 中寫了一個模擬連接到數據庫的函數,并調用它:

import time

def sim_conn_to_db() -> None:
    print('Connecting to database...')
    time.sleep(3)
    print('Connected to database successfully!')

sim_conn_to_db()

輸出:

Connecting to database...
Connected to database successfully!

現在,假設我們保持 module.py 的代碼不變,然后在 main.py 中調用 sim_conn_to_db() 方法:

from module import sim_conn_to_db

sim_conn_to_db()

輸出:

Connecting to database...
Connected to database successfully!
Connecting to database...
Connected to database successfully!

wow,你發現了么?sim_conn_to_db() 方法執行了兩遍。這是為什么呢?原因在于我們通過 from module import sim_conn_to_db 語句引入 sim_conn_to_db() 方法時,Python解釋器會加載整個 module.py 腳本,逐行加載代碼。因此,在加載的時候已經執行了一次 sim_conn_to_db() 方法;然后,在 main.py 腳本中我們又再一次調用了 sim_conn_to_db() 方法,所以,該方法被執行了2次。

那么改如何避免這種情況呢?這就是今天我向大家分享的第1個好習慣,總是使用 if __name__ == '__main__' 語句執行檢查。比如,在 module.py 文件中加入改語句:

import time

def sim_conn_to_db() -> None:
    print('Connecting to database...')
    time.sleep(3)
    print('Connected to database successfully!')

if __name__ == '__main__':
    sim_conn_to_db()

然后,我們再次執行 main.py 文件,sim_conn_to_db() 方法就不會被執行2次。因為 if __name__ == '__main__' 語句確保了只有直接執行 module.py 文件的時候,sim_conn_to_db() 方法才會被調用,在別的 .py 文件中調用該方法時只會執行一次。

如果你使用的Pycharm IDE的話,if __name__ == '__main__' 的另一個好處就是,在行號處會出現一個綠色的運行按鈕,單擊該按鈕你可以直接執行當前腳本文件或其他操作.

2.main函數讓代碼更有組織性

假設我們有以下代碼片段:

def greeting(name: str) -> None:
    print(f"Hello {name}!")

def bye() -> None:
    print("Bye! See you soon!")

if __name__ == '__main__':
    greeting(name='Jack')
    bye()

這里,我們定義了兩個簡單的問候和告別方法,并且調用它們。完全沒有問題,正確實現了預期功能。但是,如果有很多個函數呢?也在 if __name__ == '__main__': 語句中調用的話就顯得臃腫且復雜,毫無組織性。因為 if __name__ == '__main__': 語句是函數的執行入口,我們應該盡量保證簡潔。

這個時候就用到了今天我給大家分享的第2個好習慣,定義一個 main 函數,將所有函數調用和其他邏輯都放到該函數中,然后在入口處只需要調用 main 函數即可。

def greeting(name: str) -> None:
    print(f"Hello {name}!")

def bye() -> None:
    print("Bye! See you soon!")

def main() -> None:
    greeting(name='Jack')
    bye()

if __name__ == '__main__':
    main()

這樣,即使后續有新增的方法調用,只需要在main函數中添加即可,不僅確保了腳本運行入口處語句的簡潔,同時讓整個代碼結構更具組織性。另一方面,也讓你的代碼更具可讀性。

Tips:你可以將 main 函數當做是你的管家,無論多復雜、數量眾多的事務都交給管家一個人去統籌安排,而你只需要掌控管家一個人即可。

3. 保持函數的單一性和簡潔性

假設我們有一個根據姓名、年齡和身份證來判斷某人是否能夠加入俱樂部的方法,如下:

def enter_club(name: str, age: int, has_id: bool) -> None:
    if name.lower() == 'stefan':
        print('Get out of here Stefan, we don\'t want to trouble.')

    if age >= 18 and has_id:
        print('You may enter the job.')
    else:
        print('Sorry, you may not enter the club.')

def main() -> None:
    enter_club(name='Stefan', age=18, has_id=True)
    enter_club(name='Bob', age=29, has_id=True)
    enter_club(name='Ellena', age=20, has_id=False)
    enter_club(name='Bony', age=21, has_id=True)

if __name__ == '__main__':
    main()

很明顯,上面的代碼正確實現了我們想要的功能。但我并不推薦這種做法,因為 enter_club 方法中涉及了很復雜的邏輯,并不符合Python函數編程的單一職責原則。

因此,這里就會用到今天我給大家分享的第3個好習慣——盡可能保持函數的單一性和簡潔性。enter_club 方法中同時涉及到姓名、年齡和身份的判斷,實際上我們可以將其拆分成多個具有單一職責的函數。

def is_black_list(name: str) -> bool:
    return name.lower() == 'stefan'

def is_adult(age: int, has_id: bool) -> bool:
    return age >= 18 and has_id

def enter_club(name: str, age: int, has_id: bool) -> None:
    if is_black_list(name):
        print('Get out of here Stefan, we don\'t want to trouble.')

    if is_adult(age, has_id):
        print('You may enter the job.')
    else:
        print('Sorry, you may not enter the club.')

def main() -> None:
    enter_club(name='Stefan', age=18, has_id=True)
    enter_club(name='Bob', age=29, has_id=True)
    enter_club(name='Ellena', age=20, has_id=False)
    enter_club(name='Bony', age=21, has_id=True)

if __name__ == '__main__':
    main()

這里,我們將對姓名和年齡、身份的判斷拆分為兩個獨立的方法 is_black_list 和 is_adult。拆分后的函數職責單一,邏輯簡單清晰。確保實現相同功能的同時,增強了代碼的可讀性、可維護性以及可擴展性。

4. 盡可能多用類型提示

第4個好習慣就是類型注釋(type hints),如果你還不知道什么是類型注釋,以及它的諸多好處,你可以閱讀我的上一篇文章“Python類型提示(type hints):提升代碼質量與可讀性的利器!”。

這里,我們只是舉幾個簡單的例子來說明類型注釋的實用之處。

4.1 降低代碼潛在bug或錯誤的風險

比如,以下代碼段:

def add(a, b):
    return a + b

if __name__ == '__main__':
    result = add(a=1, b=2)
    print(result)  # 3

正確實現了整數的加法功能。但是,由于參數 a 和 b 并沒有任何類型說明,如果你的用戶或同事在調用 add 方法時,給了錯誤的參數類型,很可能造成意料之外的結果甚至程序錯誤,比如,

def add(a, b):
    return a + b

if __name__ == '__main__':
    result = add(a='1', b=2)
    print(result)

只要給參數 a傳遞字符串值,都會導致 TypeError,因為字符串和整數不支持連接操作。類似地,如果給參數 b 傳遞字符串值,同樣會得到 TypeError,因為整數和字符串不支持加法操作。

然而,如果給參數 a 和 b 都傳遞字符串值,會發生什么呢:

if __name__ == '__main__':
    result = add(a='1', b='2')
    print(result)  # 12

雖然程序可以正常執行,但是得到的結果是12,這是字符串連接結果,而不是我們想要的整數相加結果。

解決這種潛在錯誤或不期望結果的方法就是在方法定義中使用類型注釋:

def add(a: int, b: int) -> int:
    return a + b

這樣,在方法調用時,如果給參數傳遞了不符合定義時所給的參數類型,編譯器會提示:

有了這個提示,我們就知道應該給參數傳遞的是整數類型,而不是字符串。有效降低了潛在bug或錯誤發生的幾率,特別是在大型項目中。因為解決bug永遠都是一件令人十分惱火的事??????。

4.2 提高編碼效率

在很多IDE中,都提供了根據上下文進行代碼補齊的功能,比如Pycharm。但是,如果不知道變量類型的前提下,編譯器是沒辦法給你任何推薦的。比如:

這里,我想對一個DataFrame進行一系列的處理,由于不知道變量的數據類型,在輸入 . 之后,編譯器無法給出有效的推薦。

當我們增加類型注釋后:

這時,編譯器就會將DataFrame具有的所有方法和屬性全都列出來供我們選擇,可以快速找到我們想要的方法或屬性,從而提高編碼效率。

關于類型注釋的更多用法,你可以閱讀我的上一篇文章“Python類型提示(type hints):提升代碼質量與可讀性的利器!”。

5. 善用列表推導式

假設有一個不同年齡構成的列表,我們想要篩選出所有大歲數(年齡≥30)的人并存儲在新的列表中:

ages: list[int] = [18, 16, 20, 35, 40, 53, 65, 32, 80, 96]

olders: list[int] = list()
for age in ages:
    if age >= 30:
        olders.append(age)
print(f'People with older age: {olders}')
# Output: People with older age: [35, 40, 53, 65, 32, 80, 96]

這里我們通過循環實現了想要的功能。但其實,還有另一種更簡潔的方法,就是今天我給大家分享的最后一個好習慣——善用列表推導式:

ages: list[int] = [18, 16, 20, 35, 40, 53, 65, 32, 80, 96]

olders: list[int] = [age for age in ages if age >= 30]
print(f'People with older age: {olders}')

完整實現相同功能的同時,一下子將4行的核心代碼編程1行,是不是既簡潔又高效呢?

6. 結論

感謝你的閱讀,希望本文簡潔、清晰的內容能夠對你有所幫助!See you next time!

責任編輯:華軒 來源: 數據派探險家
相關推薦

2009-01-03 10:40:41

PHP編程代碼

2011-04-13 10:16:41

編程習慣

2009-01-03 14:34:49

ibmdwPHP

2020-04-22 10:35:07

編程學習技術

2015-10-08 10:04:39

Python高手

2011-07-07 15:48:22

PHP編程習慣

2011-07-07 15:36:51

PHP

2011-07-07 15:26:28

PHP編程習慣

2023-11-23 13:43:24

Python列表

2009-12-14 10:54:26

2016-10-21 16:30:18

Linux操作系統

2009-02-23 13:00:17

程序員職業習慣

2016-10-21 20:27:03

Linux

2024-02-28 07:48:05

Rust項目框架

2017-09-01 11:01:22

開發編程習慣

2023-10-26 18:03:14

索引Python技巧

2013-09-26 11:18:31

設計

2009-02-18 10:17:06

Java學習要點JSP

2011-03-29 12:41:49

編程

2024-01-22 18:50:35

VS Code編程開發
點贊
收藏

51CTO技術棧公眾號

香蕉av福利精品导航| 国产成人一区在线| 上原亚衣av一区二区三区| 爱爱爱爱免费视频| 高清电影在线观看免费| 91丝袜高跟美女视频| 国产精品综合久久久| 中文字幕在线观看成人| 你懂的一区二区三区| 8v天堂国产在线一区二区| 无码人妻精品一区二区蜜桃网站| 欧洲成人av| 国产老肥熟一区二区三区| 91wwwcom在线观看| 日本一级片免费| 亚洲精品播放| 日韩一区二区不卡| 欧美日韩在线免费播放| 日本大片在线播放| 欧美经典三级视频一区二区三区| 国产高清在线一区| 亚洲最大成人av| 99热免费精品在线观看| 日韩视频免费大全中文字幕| 国产高清自拍视频| 中文字幕一区二区三区日韩精品| 欧美午夜理伦三级在线观看| 青青草成人免费在线视频| 理论片午午伦夜理片在线播放| 99久久夜色精品国产网站| 91免费欧美精品| 欧美视频xxxx| 麻豆亚洲精品| 久久久久久有精品国产| 成人性视频免费看| 亚洲宅男一区| 亚洲国产精品成人va在线观看| gai在线观看免费高清| 成人开心激情| 色综合欧美在线视频区| 日韩国产一级片| 欧美xxxx视频| 一区二区三区四区在线免费观看| 一区二区三区在线视频看| 狠狠v欧美ⅴ日韩v亚洲v大胸| 99视频精品在线| 国产一区二区三区免费不卡| 国产模特av私拍大尺度| 久久 天天综合| 国产精品日韩久久久久| 国产美女www| 视频在线在亚洲| 国产成人一区二区| 国产精品熟女视频| 日韩高清在线不卡| 国产精品久久久久久久久久新婚 | 天天干在线影院| 国产精品久久久久av电视剧| 日本精品视频一区二区| 亚洲性生活网站| 久久久久黄色| 91精品国产色综合久久久蜜香臀| 婷婷激情5月天| 精品一区二区三区视频在线播放| 欧美一区二区三区喷汁尤物| 乳色吐息在线观看| 好吊妞国产欧美日韩免费观看网站 | 成人免费a级片| 97人人在线视频| 欧美日韩一区二区免费在线观看| 99精品免费在线观看| 成人看片网站| 欧美精品 国产精品| 国产成人av免费观看| 成人免费直播在线| 精品夜色国产国偷在线| 九九热免费在线| 亚洲国产一区二区三区在线播放| 欧美激情手机在线视频 | 免费日韩电影| 欧美日韩性生活| 日本网站在线看| 精品素人av| 在线播放国产一区二区三区| chinese全程对白| 国内视频精品| 国产精品草莓在线免费观看| 91国内精品视频| eeuss国产一区二区三区| 欧洲av一区| 性欧美videoshd高清| 欧美午夜精品久久久久久人妖| 手机在线免费观看毛片| 1204国产成人精品视频| 亚洲欧美日韩网| 三级在线观看免费大全| 9色国产精品| 成人久久精品视频| 亚洲色欧美另类| 亚洲人成网站在线| 欧美a在线视频| 国产情侣一区在线| 亚洲女在线观看| 久久久精品国产sm调教| 日韩高清在线不卡| 精品日本一区二区三区在线观看| 91啦中文在线| 天天操天天干天天综合网| 永久免费的av网站| 老汉色老汉首页av亚洲| 久久久国产精品免费| 日本视频在线观看免费| 国产高清精品网站| 亚洲精品一区二| 亚洲美女久久精品| 欧美成人性战久久| 亚洲区一区二区三| 久久狠狠一本精品综合网| 97久久人人超碰caoprom欧美| yiren22亚洲综合伊人22| 婷婷综合五月天| 日韩精品在线播放视频| 色乱码一区二区三区网站| 77777少妇光屁股久久一区| 国产浮力第一页| 国产精品无圣光一区二区| 日日摸日日碰夜夜爽av| 嗯用力啊快一点好舒服小柔久久| 久久精品亚洲热| 在线视频免费观看一区| 久久综合久久鬼色| 日韩视频免费播放| 天堂av一区| 免费91在线视频| 91九色蝌蚪91por成人| 国产欧美日韩视频在线观看| 鲁一鲁一鲁一鲁一澡| 鲁大师精品99久久久| 欧美福利视频在线| 午夜精品久久久久久久96蜜桃| 国产精品系列在线| 天堂网在线免费观看| 欧美伦理影院| 国产精品成人av性教育| 国产午夜在线视频| 在线观看日韩av先锋影音电影院| 国产传媒第一页| 国产精品五区| 欧美高清视频一区| 中文字幕 在线观看| 日韩精品中文字幕在线| 依依成人综合网| 久久久久亚洲蜜桃| 中文字幕一区二区三区四区在线视频| 狠狠操综合网| 国产精品美乳在线观看| 在线a免费看| 6080日韩午夜伦伦午夜伦| 欧美另类videoxo高潮| 韩国理伦片一区二区三区在线播放| 中文字幕久精品免| 成年永久一区二区三区免费视频| xx视频.9999.com| 亚洲精品成av人片天堂无码| 亚洲成年人网站在线观看| 色综合久久五月| 久久高清一区| 亚洲毛片aa| 欧洲一区在线| 午夜免费日韩视频| 免费黄网站在线观看| 欧美在线观看视频一区二区三区| 青青草华人在线视频| 国产一区二区三区视频在线播放| 国产又粗又猛又爽又黄的网站| 欧美日韩看看2015永久免费 | 中文字幕精品在线观看| 亚洲欧美一区二区视频| 日本久久久久久久久久| 国产精品五区| 艳母动漫在线观看| 欧美一性一交| 成人网址在线观看| 白浆在线视频| 日韩视频免费观看| 亚洲 国产 欧美 日韩| 欧美日韩一区二区在线观看| 青青草原在线免费观看| 久久久青草青青国产亚洲免观| 成人性生交免费看| 亚洲成色精品| 中文字幕一区二区三区四区五区| 成人动漫视频| 国产精品欧美激情| 91九色国产在线播放| 一色桃子一区二区| 欧美 日韩 国产 成人 在线 91| 色欧美片视频在线观看| 强行糟蹋人妻hd中文| 久久精品男人天堂av| 欧美一级大片免费看| 日韩激情av在线| 人妻少妇精品久久| 综合天堂久久久久久久| 欧美第一黄网| 澳门久久精品| 91最新在线免费观看| 国产精品专区免费| 欧美激情一二三| 国产网友自拍视频导航网站在线观看| 亚洲精品福利在线观看| 国产精品日韩无码| 91九色02白丝porn| 国产乡下妇女做爰视频| 国产精品成人在线观看 | 成人欧美一区二区三区小说| av鲁丝一区鲁丝二区鲁丝三区| 国产在线视频一区二区三区| 国产激情在线观看视频| 在线精品一区二区| 伊人再见免费在线观看高清版| 成人在线亚洲| 欧美一级日本a级v片| 国产精品tv| 不卡视频一区二区| 精品中文字幕一区二区三区四区| 国产精品欧美在线| 另类专区亚洲| 青草成人免费视频| jizz一区二区三区| 久久久欧美精品| 欧洲精品二区| 欧美另类老女人| 国产一二区在线观看| xvideos国产精品| 欧美日韩视频在线播放| 中文字幕精品网| 大片免费播放在线视频| 亚洲色图五月天| 都市激情在线视频| 亚洲新声在线观看| www在线免费观看| 中文字幕精品久久| 欧美成人三区| 超碰97人人做人人爱少妇| 国产cdts系列另类在线观看| 色系列之999| 欧美极品另类| 久久香蕉国产线看观看av| 国产美女av在线| 欧美成人在线免费| 美女91在线| 国语自产精品视频在线看一大j8| 91在线三级| 欧美又大又粗又长| 免费观看成人性生生活片 | 欧美老女人在线视频| 日本在线观看高清完整版| 久久青草福利网站| 亚洲精品日产| 国产精品久久9| 999久久久国产999久久久| 亚洲专区国产精品| 精品五月天堂| 日韩欧美三级一区二区| 91综合在线| 9色porny| 久热精品视频| 亚洲综合伊人久久| av电影在线观看一区| 精品人妻互换一区二区三区| 中文字幕不卡在线播放| 中文字幕亚洲欧美日韩| 五月婷婷综合在线| 一级特黄免费视频| 日韩精品一区二区在线| 天天在线女人的天堂视频| 中文字幕九色91在线| 少女频道在线观看免费播放电视剧| 久久久人成影片一区二区三区观看 | 亚洲人成影院在线观看| 日韩欧美视频在线免费观看| 在线观看亚洲精品视频| www.久久综合| 亚洲天堂影视av| 五月天激情在线| 国产97在线视频| 日韩一区二区三区精品视频第3页| 狠狠综合久久av| 91亚洲国产| 99精品人妻少妇一区二区 | 日韩免费啪啪| 亚州欧美日韩中文视频| 国产成人毛片| 精品欧美国产| 一区二区三区网站| 精品www久久久久奶水| 国产一区二区不卡老阿姨| theav精尽人亡av| 亚洲码国产岛国毛片在线| 中文字幕国产在线观看| 日韩欧美二区三区| 色大18成网站www在线观看| 97不卡在线视频| 国产精品色婷婷在线观看 | 综合国产在线| 韩国中文字幕av| 91看片淫黄大片一级| 在线免费观看亚洲视频| 欧美亚洲综合色| 天堂在线视频免费观看| 久久五月天综合| julia一区二区三区中文字幕| 黄色国产精品一区二区三区| 亚洲最大黄网| 欧美女同在线观看| 久久精品人人做人人爽97| 国产乡下妇女做爰毛片| 日韩免费视频一区| 蜜桃视频在线观看www社区 | 萌白酱国产一区二区| 国产精品第一| 欧美xxxx黑人又粗又长精品| 激情自拍一区| wwwww在线观看| 日韩一区在线免费观看| 91激情在线观看| 中文字幕在线成人| 日本在线精品| 欧美日韩视频在线一区二区观看视频| 欧洲美一区二区三区亚洲 | 首页亚洲欧美制服丝腿| 国产精品久久久免费观看| 一区二区三区高清不卡| 国产老妇伦国产熟女老妇视频| 国产亚洲视频在线观看| 小黄鸭精品aⅴ导航网站入口| 精品91免费| 999在线观看精品免费不卡网站| 波多野吉衣在线视频| 亚洲精品va在线观看| 国产成人精品无码高潮| 久热精品视频在线观看| 国产精品一区二区三区www| 一区二区三区国| 精品一区二区三区在线观看国产| 在线观看天堂av| 制服丝袜亚洲精品中文字幕| 成人短视频在线| 亚洲一区二区在线播放| 亚洲欧美文学| av在线播放网址| 精品日韩中文字幕| 嫩草研究院在线| 国产精品视频午夜| 国产电影一区二区在线观看| 国产成人美女视频| 亚洲日韩欧美一区二区在线| aaa国产视频| 久久久久久亚洲精品| 色哟哟精品丝袜一区二区| 好男人www社区| 中文字幕亚洲综合久久菠萝蜜| 国产精品久久久久久久久久久久久久久久久久 | 精品国产sm最大网站| av不卡高清| 欧美精彩一区二区三区| 麻豆国产精品777777在线| 99久久99久久精品国产| 精品日韩成人av| 亚洲人成在线网站| 一区二区三区四区不卡| 国产99精品国产| 好吊色在线视频| 久久精品小视频| 日韩免费电影在线观看| 亚洲老女人av| 亚洲一区二区三区中文字幕| 色吊丝在线永久观看最新版本| 国产精品h在线观看| 一本一本久久a久久综合精品| 国产51自产区| 欧美性猛交xxxx黑人交| 中文av资源在线| 欧美日韩国产精品一卡| 国产在线精品一区二区三区不卡| 国产乡下妇女做爰毛片| 国产香蕉一区二区三区在线视频 | 在线观看污视频| 91麻豆swag| 99在线精品视频免费观看20| 青青草99啪国产免费| 天天综合网网欲色| 欧美 日本 国产| 日韩欧美一级片| 成人午夜亚洲| 国模无码视频一区二区三区| 亚洲欧美日韩国产手机在线| 青青草手机在线| 97netav|