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

歡迎訪問 生活随笔!

生活随笔

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

python

Python规范:提高可读性

發布時間:2025/3/20 python 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python规范:提高可读性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PEP 8 規范

PEP 是 Python Enhancement Proposal 的縮寫,翻譯過來叫“Python 增強規范”。

縮進規范

PEP 8 規范告訴我們,請選擇四個空格的縮進,不要使用 Tab,更不要 Tab 和空格混著用。 第二個要注意的是,每行最大長度請限制在 79 個字符。

空行規范

PEP 8 規定,全局的類和函數的上方需要空兩個空行,而類的函數之間需要空一個空行。

空格規范

函數的參數列表中,調用函數的參數列表中會出現逗號,請注意逗號后要跟一個空格,這是英語的使用習慣,也能讓每個參數獨立閱讀,更清晰。

  • 冒號后面也要跟一個空格。
  • 在#后、注釋前加一個空格。
  • 操作符,例如+,-,*,/,&,|,=,==,!=,請在兩邊都保留空格。不過與此對應,括號內的兩端并不需要空格。

換行規范

控制每行的最大長度不超過 79 個字符,但是有時候,函數調用邏輯過長而不得不超過這個數字時按以下規范:

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助, 群里還有不錯的視頻學習教程和PDF電子書! ''' def solve1(this_is_the_first_parameter, this_is_the_second_parameter, this_is_the_third_parameter,this_is_the_forth_parameter, this_is_the_fifth_parameter, this_is_the_sixth_parameter):return (this_is_the_first_parameter + this_is_the_second_parameter + this_is_the_third_parameter +this_is_the_forth_parameter + this_is_the_fifth_parameter + this_is_the_sixth_parameter)def solve2(this_is_the_first_parameter, this_is_the_second_parameter, this_is_the_third_parameter,this_is_the_forth_parameter, this_is_the_fifth_parameter, this_is_the_sixth_parameter):return this_is_the_first_parameter + this_is_the_second_parameter + this_is_the_third_parameter + \this_is_the_forth_parameter + this_is_the_fifth_parameter + this_is_the_sixth_parameter(top_secret_func(param1=12345678, param2=12345678, param3=12345678, param4=12345678, param5=12345678).check().launch_nuclear_missile().wait())top_secret_func(param1=12345678, param2=12345678, param3=12345678, param4=12345678, param5=12345678).check() \.launch_nuclear_missile().wait()

1.通過括號來將過長的運算進行封裝.

2.通過換行符來實現.

文檔規范

  • import 盡量放在開頭.
  • 不要使用 import 一次導入多個模塊.
  • from module import func 這樣的語句,請確保 func 在本文件中不會出現命名沖突。或者通過 from module import func as new_func 來進行重命名,從而避免沖突。

注釋規范

行注釋并不是很推薦的方式。

文檔描述

docstring 的寫法,它是用三個雙引號開始、三個雙引號結尾。我們首先用一句話簡單說明這個函數做什么,然后跟一段話來詳細解釋;再往后是參數列表、參數格式、返回值格式。

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助, 群里還有不錯的視頻學習教程和PDF電子書! ''' class SpatialDropout2D(Dropout):"""Spatial 2D version of Dropout.This version performs the same function as Dropout, however it dropsentire 2D feature maps instead of individual elements. If adjacent pixelswithin feature maps are strongly correlated (as is normally the case inearly convolution layers) then regular dropout will not regularize theactivations and will otherwise just result in an effective learning ratedecrease. In this case, SpatialDropout2D will help promote independencebetween feature maps and should be used instead.Arguments:rate: float between 0 and 1. Fraction of the input units to drop.data_format: 'channels_first' or 'channels_last'.In 'channels_first' mode, the channels dimension(the depth) is at index 1,in 'channels_last' mode is it at index 3.It defaults to the `image_data_format` value found in yourKeras config file at `~/.keras/keras.json`.If you never set it, then it will be "channels_last".Input shape:4D tensor with shape:`(samples, channels, rows, cols)` if data_format='channels_first'or 4D tensor with shape:`(samples, rows, cols, channels)` if data_format='channels_last'.Output shape:Same as inputReferences:- [Efficient Object Localization Using ConvolutionalNetworks](https://arxiv.org/abs/1411.4280)"""def __init__(self, rate, data_format=None, **kwargs):super(SpatialDropout2D, self).__init__(rate, **kwargs)if data_format is None:data_format = K.image_data_format()if data_format not in {'channels_last', 'channels_first'}:raise ValueError('data_format must be in ''{"channels_last", "channels_first"}')self.data_format = data_formatself.input_spec = InputSpec(ndim=4)

命名規范

變量使用小寫,通過下劃線串聯起來,例如:data_format、input_spec、image_data_set。唯一可以使用單字符的地方是迭代,比如 for i in range(n) 這種,為了精簡可以使用。如果是類的私有變量,請記得前面增加兩個下劃線。

  • 常量,最好的做法是全部大寫,并通過下劃線連接,例如:WAIT_TIME、SERVER_ADDRESS、PORT_NUMBER。
  • 函數名,同樣也請使用小寫的方式,通過下劃線連接起來,例如:launch_nuclear_missile()、check_input_validation()。
  • 類名,則應該首字母大寫,然后合并起來,例如:class SpatialDropout2D()、class FeatureSet()。

代碼分解技巧

不寫重復代碼。

如:

if i_am_rich:money = 100send(money) else:money = 10send(money)

都有send函數,可改為:

if i_am_rich:money = 100 else:money = 10 send(money)

代碼嵌套過深:

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助, 群里還有不錯的視頻學習教程和PDF電子書! ''' def send(money):if is_server_dead:LOG('server dead')returnelse:if is_server_timed_out:LOG('server timed out')returnelse:result = get_result_from_server()if result == MONEY_IS_NOT_ENOUGH:LOG('you do not have enough money')returnelse:if result == TRANSACTION_SUCCEED:LOG('OK')returnelse:LOG('something wrong')return

可改為:

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助, 群里還有不錯的視頻學習教程和PDF電子書! ''' def send(money):if is_server_dead:LOG('server dead')returnif is_server_timed_out:LOG('server timed out')returnresult = get_result_from_server()if result == MONET_IS_NOT_ENOUGH:LOG('you do not have enough money')returnif result == TRANSACTION_SUCCEED:LOG('OK')returnLOG('something wrong')

以一個簡單的二分搜索來舉例說明。給定一個非遞減整數數組,和一個 target,要求找到數組中最小的一個數 x,可以滿足 x*x > target。一旦不存在,則返回 -1。

代碼實現如果如下所示,那么可以再以一個函數只干一件事情的原則再優化下。

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助, 群里還有不錯的視頻學習教程和PDF電子書! ''' def solve(arr, target):l, r = 0, len(arr) - 1ret = -1while l <= r:m = (l + r) // 2if arr[m] * arr[m] > target:ret = mr = m - 1else:l = m + 1if ret == -1:return -1else:return arr[ret]print(solve([1, 2, 3, 4, 5, 6], 8)) print(solve([1, 2, 3, 4, 5, 6], 9)) print(solve([1, 2, 3, 4, 5, 6], 0)) print(solve([1, 2, 3, 4, 5, 6], 40))

優化如下:

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助, 群里還有不錯的視頻學習教程和PDF電子書! ''' def comp(x, target):return x * x > targetdef binary_search(arr, target):l, r = 0, len(arr) - 1ret = -1while l <= r:m = (l + r) // 2if comp(arr[m], target):ret = mr = m - 1else:l = m + 1return retdef solve(arr, target):id = binary_search(arr, target)if id != -1:return arr[id]return -1print(solve([1, 2, 3, 4, 5, 6], 8)) print(solve([1, 2, 3, 4, 5, 6], 9)) print(solve([1, 2, 3, 4, 5, 6], 0)) print(solve([1, 2, 3, 4, 5, 6], 40))

類中屬性很多時可以抽出相同特性的單獨作為類,如:

class Person:def __init__(self, name, sex, age, job_title, job_description, company_name):self.name = nameself.sex = sexself.age = ageself.job_title = job_titleself.job_description = descriptionself.company_name = company_name

job_title , job_description , company_name 都與工作有關,表達是同一個意義實體,就可以抽出單獨作為類:

class Person:def __init__(self, name, sex, age, job_title, job_description, company_name):self.name = nameself.sex = sexself.age = ageself.job = Job(job_title, job_description, company_name)class Job:def __init__(self, job_title, job_description, company_name):self.job_title = job_titleself.job_description = descriptionself.company_name = company_name

總結

以上是生活随笔為你收集整理的Python规范:提高可读性的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 中文字幕制服丝袜 | 巨乳美女在线 | 亚洲精品一区二区三区四区 | 亚洲成人一区二区在线观看 | 久热这里只有精品在线 | 夜夜操影院 | 手机在线视频一区 | 人人人人爽 | 综合国产一区 | 亚洲自拍偷拍第一页 | 三级欧美视频 | 精品嫩模一区二区三区 | 无码日本精品xxxxxxxxx | 91在线播放视频 | 欧美日韩午夜激情 | 国产精品人人做人人爽人人添 | 激情网五月天 | 极品尤物一区二区三区 | 国产乡下妇女做爰 | 波多野结衣av无码 | 日韩精品视频播放 | аⅴ资源天堂资源库在线 | 亚洲激情三区 | 日本一区视频在线观看 | 久久中文娱乐网 | 午夜精品一区二区三区三上悠亚 | 古代黄色一级片 | 暖暖日本视频 | 国产av天堂无码一区二区三区 | 欧美日韩在线一区二区 | www在线视频| 国产欧美一区二区三区在线老狼 | 少妇av一区二区三区 | 色多多导航 | 欧美色图亚洲色 | 欧美性视频一区二区 | 91人妻一区二区三区蜜臀 | 国产a一级 | 亚洲美女视频在线观看 | 欧美精品一区二区久久婷婷 | 亚洲精品一区二区三区在线观看 | 国产美女无遮挡网站 | 五月情婷婷 | 黄色网页免费在线观看 | 国产一区二区激情视频 | 美女赤身免费网站 | 校园春色亚洲激情 | 中国字幕av | 国产99爱| 91精品国产一区二区 | 国产色网址 | 国产一区麻豆 | 日韩av大片 | 中文字幕在线播放视频 | 一级特黄aa大片欧美 | 天天干,夜夜操 | 国产精品久久久久不卡 | 成人免费在线视频观看 | 色吊丝网站 | 草av| 国产黄色大片视频 | 中文天堂在线播放 | av视屏| 婷婷社区五月天 | 亚洲va在线 | 午夜资源站 | 久久亚洲免费视频 | 久久综合久久久久 | av免费播放| 日韩影视一区 | 国产精品久久久久久亚洲调教 | 奇米四色在线观看 | 欧美一级一片 | 亚洲石原莉奈一区二区在线观看 | 波多野吉衣在线视频 | 色5566| 韩国一区二区三区视频 | 免费一区二区三区视频在线 | 亚洲欧美综合精品久久成人 | 国产日韩欧美综合在线 | 永久在线观看 | 少妇又色又爽又黄的视频 | 久久久久999 | 成人一级影视 | 一级黄色影院 | 2019中文字幕在线免费观看 | 久久久久久久一区二区三区 | 老王66福利网 | 人妻无码中文久久久久专区 | av毛片在线 | 夜夜骑狠狠干 | 国内老熟妇对白xxxxhd | 成人观看视频 | 久月婷婷 | 国产成人av一区二区 | www奇米影视com | 成人精品三级av在线看 | 亚洲色综合| 99精品热 |