日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python函数能否增强代码可读性_总结的几个Python函数方法设计原则

發布時間:2025/4/5 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python函数能否增强代码可读性_总结的几个Python函数方法设计原则 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在任何編程語言中,函數的應用主要出于以下兩種情況:

1.代碼塊重復,這時候必須考慮用到函數,降低程序的冗余度

2.代碼塊復雜,這時候可以考慮用到函數,增強程序的可讀性

當流程足夠繁雜時,就要考慮函數,及如何將函數組合在一起。在Python中做函數設計,主要考慮到函數大小、聚合性、耦合性三個方面,這三者應該歸結于規劃與設計的范疇。高內聚、低耦合則是任何語言函數設計的總體原則。

1.如何將任務分解成更有針對性的函數從而導致了聚合性

2.如何設計函數間的通信則又涉及到耦合性

3.如何設計函數的大小用以加強其聚合性及降低其耦合性

【聚合】

每個函數只做一件事

完美的程序設計,每個函數應該而且只需做一件事。

比如說:把大象放進冰箱分三步:把門打開、把大象放進去、把門關上。

這樣就應該寫三個函數而不是一個函數拿所有的事全做了。這樣結構清晰,層次分明,也好理解!

【大小】

保持簡單、保持簡短

Python即是面向過程的語言,也是面向對象的語言,但更多的是充當腳本語言的角色。

同樣的功能,使用Python來實現其代碼長度也許是C/C++/Java等語言的1/3. 幾百行代碼就能實現不小的功能!

如果項目中設計的一個函數需要翻頁才能看完的話,就要考慮將函數拆分了。

在Python自帶的200多個模塊中,很少看到某個函數有兩、三頁的。

Python代碼以簡單明了著稱,一個過長或者有著深層嵌套的函數往往成為設計缺陷的征兆。

【耦合】

輸入使用參數、輸出使用return語句

這樣做可以讓函數獨立于它外部的東西。參數和return語句就是隔離外部依賴的最好的辦法。

慎用全局變量

第一重考慮: 全局變量通常是一種蹩腳的函數間的進行通信的方式。

它會引發依賴關系和計時的問題,從而會導致程序調試和修改的困難。

第二重考慮: 從代碼及性能優化來考慮,本地變量遠比全局變量快。

根據Python對變量的搜索的先后順序: 本地函數變量==》上層函數變量==》全局變量==》內置變量

從上面可以看出,本地變量優先被搜索,一旦找到,就此停下。下面專門對其做了測試,測試結果如下: import profile

A = 5

def param_test():

B = 5

res = 0

for i in range(100000000):

res = B + i

return res

if __name__=='__main__':

profile.run('param_test()')

>>> ===================================== RESTART =====================================

>>>

5 function calls in 37.012 seconds #全局變量測試結果:37 秒

Ordered by: standard name

ncalls tottime percall cumtime percall filename:lineno(function)

1 19.586 19.586 19.586 19.586 :0(range)

1 1.358 1.358 1.358 1.358 :0(setprofile)

1 0.004 0.004 35.448 35.448 :1()

1 15.857 15.857 35.443 35.443 Learn.py:5(param_test)

1 0.206 0.206 37.012 37.012 profile:0(param_test())

0 0.000 0.000 profile:0(profiler)

>>> ===================================== RESTART =====================================

>>>

5 function calls in 11.504 seconds #局部變量測試結果: 11 秒

Ordered by: standard name

ncalls tottime percall cumtime percall filename:lineno(function)

1 3.135 3.135 3.135 3.135 :0(range)

1 0.006 0.006 0.006 0.006 :0(setprofile)

1 0.000 0.000 11.497 11.497 :1()

1 8.362 8.362 11.497 11.497 Learn.py:5(param_test)

1 0.000 0.000 11.504 11.504 profile:0(param_test())

0 0.000 0.000 profile:0(profiler)

避免改變可變類型參數

Python數據類型比如說列表、字典屬于可變對象。在作為參數傳遞給函數時,有時會像全局變量一樣被修改。

這樣做的壞處是:增強了函數之間的耦合性,從而導致函數過于特殊和不友好。維護起來也困難。

這個時候就要考慮使用切片S[:]和copy模塊中的copy()函數和deepcopy()函數來做個拷貝,避免修改可變對象

具體參考這篇文章: Python中的深淺拷貝詳解

避免直接改變另一個模塊中的變量

比如說在b.py文件中導入a模塊,a中有變量PI = 3.14, 但b.py想將其修改為:PI = 3.14159, 在這里你就搞不清楚變量PI原先的值到底是多少。碰到這種情況,可以考慮用易懂的函數名來實現: #模塊a.py

PI = 3.14

def setPi(new):

PI = new

return PI

這樣既有自己想要的PI的值,又沒有改變a模塊中PI的值 import a

PI = a.setPi(3.14159)

print PI;a.PI

總結

以上是生活随笔為你收集整理的python函数能否增强代码可读性_总结的几个Python函数方法设计原则的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黄色天堂 | 91porny首页入口| 91视频你懂的| 狠狠丁香 | 亚洲av无码久久精品色欲 | 国产精品1区2区3区4区 | 国产一级一片免费播放 | 五月综合激情网 | 午夜肉伦伦 | 人妻中文字幕一区二区三区 | 欧美区在线 | 欧美性理论片在线观看片免费 | 中文字幕在线播放不卡 | 国产精品极品白嫩 | 亚洲精品一区二区三区区别 | 裸体男女树林做爰 | 男人的天堂av网 | 麻豆免费下载 | 韩国美女毛片 | 欧美成人一级 | 亚欧洲精品在线视频免费观看 | 中文在线а√在线8 | 57pao成人国产永久免费视频 | 欧美真人性野外做爰 | 特级西西444www | 2025中文字幕 | 日韩成人福利 | 尤物视频免费在线观看 | 一级二级三级黄色片 | 天堂影视在线观看 | 麻豆成人免费视频 | 男人操女人下面视频 | 成人性生交大片免费看r链接 | 日本三区视频 | 97在线精品视频 | 美女张开腿让人桶 | www.色综合.com | 久久一级电影 | 国产精品二区视频 | 中文一区二区在线观看 | 国产精品片 | 久久免费国产 | 3d动漫精品啪啪一区二区下载 | 色偷偷av一区二区三区 | 久久免费视频网 | h片在线观看视频 | 欧美va在线观看 | 欧美一区二区三区视频在线 | 天堂网中文字幕 | 欧美老肥妇做爰bbww | 性色一区二区 | 免费福利在线观看 | 国内精品视频在线 | 欧洲亚洲国产精品 | 精品国产一二 | 特级西西444www大精品视频 | 91av国产在线 | 久久爱成人 | 亚洲精品一区久久久久久 | 中文字幕一二 | 操亚洲女人| 亚洲最大在线视频 | 成人av黄色 | 久久国产视频播放 | 欧美一区二区最爽乱淫视频免费看 | 免费黄色一级视频 | 国产黄免费 | 黄p在线播放 | 色偷偷欧美 | 欧美人妻精品一区二区免费看 | 免费av不卡 | 粉嫩av一区二区 | 色综合免费| 精品国产午夜福利在线观看 | 久久尹人 | 成人毛片视频在线观看 | 在线精品一区二区三区 | 手机在线免费观看av | 美女福利在线视频 | 黄色片视频播放 | aaa国产 | 激情网站在线 | 日韩免费看 | 欧美色就是色 | 午夜爱| 521a人成v香蕉网站 | 欧美激情视频网 | 亚洲性猛交xxxx乱大交 | 国产乱叫456在线 | 美女一区二区三区四区 | 好av| 国产在线高潮 | 91干网 | 狼人狠狠干 | 91av福利视频 | 亚洲视频手机在线 | 葵司有码中文字幕二三区 | 成人在线短视频 | 麻豆av一区二区三区在线观看 |