日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

只會在終端使用Python運行代碼?這些進階用法了解了解

來源: 責編: 時間:2023-11-30 09:29:01 248觀看
導讀大部分同學在終端使用Python可能只是簡單的執行代碼,但其實結合一些Python內置模塊或第三方庫可以實現更高級且便捷的用法,一起看看吧!代碼Benchmark測試首先簡單寫個斐波那契數列,命名為example.py:import timedef fib(n)

大部分同學在終端使用Python可能只是簡單的執行代碼,但其實結合一些Python內置模塊或第三方庫可以實現更高級且便捷的用法,一起看看吧!DGI28資訊網——每日最新資訊28at.com

代碼Benchmark測試

首先簡單寫個斐波那契數列,命名為example.py:DGI28資訊網——每日最新資訊28at.com

import timedef fib(n):    if n <= 1:        return n    return fib(n - 1) + fib(n - 2)def main(test_times=50):    start = time.perf_counter()    for _ in range(test_times):        fib(30)    print(f'Time spent: {time.perf_counter() - start} s')if __name__ == '__main__':    main()

現在對這份代碼進行Benchmark測試,Python中的內置模塊cProfile可以幫助我們完成這個工作,在終端執行以下命令:DGI28資訊網——每日最新資訊28at.com

python -m cProfile example.py

可以得到一份深入的測試報告,如圖所示:DGI28資訊網——每日最新資訊28at.com

DGI28資訊網——每日最新資訊28at.com

其中表頭從左至右:DGI28資訊網——每日最新資訊28at.com

  • ncalls:函數被調用的次數
  • tottime:函數花費的總時間(不包括被調用函數花費的時間)
  • percall:每次調用所花費的時間(等于tottime除以ncalls)即15.358/134626850
  • cumtime:在函數中累計花費的時間,包括在被調用函數中花費的時間
  • percall:每次調用所花費的時間(等于cumtime除以ncalls)15.358/50

是不是肥腸簡單且清晰明了,對我們優化代碼提供幫助。DGI28資訊網——每日最新資訊28at.com

值得一提的是,如果只想測試一些簡單的Python代碼,內置的timeit是個不錯的選擇,如:DGI28資訊網——每日最新資訊28at.com

python -m timeit '[i for i in range(100)]'

使用 timeit 測量執行此列表推導式所需的時間,得到輸出:DGI28資訊網——每日最新資訊28at.com

200000 loops, best of 5: 1.4 usec per loop

此輸出表明每次計時將執行200000次列表推導,共計時測試了5次,最好的結果是1.4毫秒。DGI28資訊網——每日最新資訊28at.com

代碼風格檢查

如何評估我們的Python代碼是否Pythonic呢?第三方庫flake8可以輕松做到,首先安裝:DGI28資訊網——每日最新資訊28at.com

pip install flake8

確保安裝完成后,我們還是使用前述斐波那契example.py,只需在終端輸入:DGI28資訊網——每日最新資訊28at.com

python -m flake8 example.py

輸出:DGI28資訊網——每日最新資訊28at.com

DGI28資訊網——每日最新資訊28at.com

可以按照提示進行優化。DGI28資訊網——每日最新資訊28at.com

格式化Python代碼

當知道我們寫的史山代碼需要風格改進,由前述可以結合flake8進行手動優化,那有沒有什么能幫我們自動優化呢?第三方庫black誕生。DGI28資訊網——每日最新資訊28at.com

同樣使用pip安裝:DGI28資訊網——每日最新資訊28at.com

pip install black

安裝完畢后通過一行命令使用black格式化我們的代碼:DGI28資訊網——每日最新資訊28at.com

python -m black example.py

輸出:DGI28資訊網——每日最新資訊28at.com

DGI28資訊網——每日最新資訊28at.com

然后再次使用flake8檢查代碼風格,無任何輸出,代表無優化項。DGI28資訊網——每日最新資訊28at.com

此時我們的代碼變成了:DGI28資訊網——每日最新資訊28at.com

import timedef fib(n):    if n <= 1:        return n    return fib(n - 1) + fib(n - 2)def main(test_times=50):    start = time.perf_counter()    for _ in range(test_times):        fib(30)    print(f"Time spent: {time.perf_counter() - start} s")if __name__ == "__main__":    main()

使用Pylint進行更專業的代碼分析

僅擁有良好的風格還不完美,為了進行樣式之外的代碼分析,還需要結合pylint:DGI28資訊網——每日最新資訊28at.com

pip install pylint

此處基于black優化過的代碼進行pylint分析,在終端輸入一行命令:DGI28資訊網——每日最新資訊28at.com

python -m pylint example.py

輸出如下,可知該代碼缺少文檔字符串DGI28資訊網——每日最新資訊28at.com

DGI28資訊網——每日最新資訊28at.com

所以在大佬review代碼前,可以借助pylint先進行一波優化。DGI28資訊網——每日最新資訊28at.com

對代碼進行安全性分析

Python第三方庫bandit可以幫助我們檢查代碼中潛在的安全隱患、不安全的函數或模塊、密碼或密鑰等問題:DGI28資訊網——每日最新資訊28at.com

pip install bandit

在終端執行如下命令進行安全檢查:DGI28資訊網——每日最新資訊28at.com

python -m bandit example.py

輸出:DGI28資訊網——每日最新資訊28at.com

DGI28資訊網——每日最新資訊28at.com

表明肥腸安全。DGI28資訊網——每日最新資訊28at.com

解析json并清晰打印

除了在vscode中打開json,并格式化顯示達到清晰展示的目的外,Python自帶的模塊也能完成這個,比如有example.json文件內容如下:DGI28資訊網——每日最新資訊28at.com

[  {"name": {"first_name":"Xukong", "last_name":"Cai"}, "hobby":"rap, basketball"},  {"name": {"first_name":"San", "last_name":"Zhang"}, "hobby":"eat"}]

使用如下命令在終端格式化顯示:DGI28資訊網——每日最新資訊28at.com

python -m json.tool example.json

輸出:DGI28資訊網——每日最新資訊28at.com

DGI28資訊網——每日最新資訊28at.com

肥腸清晰,插一句,若同樣想在終端打印代碼中輸出的json結構,可以使用pprint。DGI28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-35304-0.html只會在終端使用Python運行代碼?這些進階用法了解了解

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 系統設計概念:生產 Web 應用的架構

下一篇: 全網最細:Jest+Enzyme測試React組件(包含交互、DOM、樣式測試)

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 萨迦县| 嘉义县| 红安县| 星子县| 崇文区| 南平市| 从江县| 秦安县| 莒南县| 焉耆| 拉萨市| 冷水江市| 广水市| 休宁县| 十堰市| 云南省| 塔河县| 普兰店市| 文山县| 乐东| 邢台市| 科技| 罗甸县| 弥渡县| 沂南县| 巫溪县| 山西省| 防城港市| 太仆寺旗| 冕宁县| 灌阳县| 来宾市| 缙云县| 连城县| 金乡县| 安庆市| 吉木萨尔县| 怀来县| 慈溪市| 岳池县| 墨脱县|