最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一篇文章帶你了解谷歌這些大廠是怎么寫 python 代碼的

 更新時(shí)間:2021年09月17日 17:18:30   作者:檸檬軟件測(cè)試  
這篇文章主要介紹了谷歌這些大廠怎么寫python代碼,我們寫代碼,往往還是按照其它語(yǔ)言的思維習(xí)慣來(lái)寫,那樣的寫法不僅運(yùn)行速度慢,代碼讀起來(lái)也費(fèi)盡,給人一種拖泥帶水的感覺,需要的朋友可以參考下

谷歌內(nèi)部的 python 代碼規(guī)范

熟悉 python 一般都會(huì)努力遵循 pep8 規(guī)范,也會(huì)有一些公司制定內(nèi)部的代碼規(guī)范。大公司制定規(guī)范的目的不是說(shuō)你一定要怎樣去使用編程語(yǔ)言,而是讓大家遵守同一套規(guī)則,節(jié)省其他人閱讀代碼的成本,方便協(xié)作和溝通。對(duì)于個(gè)人而言,日常編寫代碼只需要保持風(fēng)格統(tǒng)一,前后一致,就是一個(gè)很大的勝利,然后再加入一些實(shí)用的規(guī)則,在寫代碼的時(shí)候有效減少可能引入的 bug。

接下來(lái),我截取了一些谷歌的 python 代碼規(guī)范中一些有意思的要點(diǎn),希望日后能更深刻的感受到它們的用處。

1.導(dǎo)入模塊和包,不導(dǎo)入單獨(dú)的類、函數(shù)或者變量。

這通常能簡(jiǎn)化導(dǎo)入過(guò)程,方便命名空間管理。但是缺點(diǎn)也很明顯,當(dāng)名稱較長(zhǎng)時(shí),調(diào)用函數(shù)和類的代碼會(huì)很長(zhǎng),影響可讀性。

  # yes
from sound.effects import echo
echo.EchoFilter()
 
# no
from sound.effects.echo import EchoFilter
EchoFilter()

2.從根目錄導(dǎo)入,不假定任意的 sys.path,也不使用相對(duì)導(dǎo)入。

假設(shè) doctor.who 路徑已經(jīng)被某種手段添加到了 sys.path,也應(yīng)該從開始的地方導(dǎo)入。

  # yes
from doctor.who import jodie
 
# other than doctor.who is already in sys.path
# no
import jodie

3.謹(jǐn)慎使用異常

使用異常需要注意的細(xì)節(jié)有:

  • 優(yōu)先合理的使用內(nèi)置異常類。比如需要正數(shù)的情況下傳遞了一個(gè)負(fù)數(shù)引發(fā)的錯(cuò)誤,拋出 ValueError 類型。
  • 永遠(yuǎn)不要使用 except 捕獲所有的異常,這可能會(huì)造成一些隱藏 bug 難于發(fā)現(xiàn)。你應(yīng)該使用特定異常類型分開捕獲。
  • 不要使用 assert 指示某些意外情況,應(yīng)該使用 raise。
  • 不要在 try 和 except 子句中加入太多邏輯,try 塊的體積越大, 期望之外的異常就越容易被觸發(fā)。

盡量使用正確的內(nèi)置異常類型:

  def division(a, b):
    if b == 0:
        raise ValueError('b can not be zero')

避免全局捕獲異常,指定異常類型:

  # yes
try:
    1 / 0
    "abc"[100]
except ZeroDivisionError:
    ...
except IndexError:
    ...
 
# no
try:
    1 / 0
    "abc"[100]
except:
    ...

4.不要使用可變類型作為函數(shù)默認(rèn)值,如果修改了這個(gè)變量,默認(rèn)值也會(huì)跟著發(fā)生變化。

  # yes
def foo(a, b=None):
    if b is None:
        b = []
def foo(a, b: Sequence = ()):
 
# no
def foo(a, b=[]):
def foo(a, b=time.time()):
def foo(a, b={}):

5.注意條件表達(dá)式的隱式布爾值

  • 對(duì)于序列(字符串, 列表, 元組), 要注意空序列是 False,在判斷是否為空序列時(shí),使用隱性的 if not seq 判斷,而不用 if len(seq) == 0;
  • 判斷數(shù)字是否為 0,則使用 number == 0,而不使用用 if not number。因?yàn)?number 可能設(shè)置的是默認(rèn)值為 None。
  • 判斷是否為 None 使用 x is None,而不用 not x。
  # yes
.if not users: # sequence
if number == 0:
if i % 10 == 0:
def f(x=None):
    if x is None:
 
# no
if len(users) == 0:
if number is not None and not number:
if not i % 10:
def f(x=None):
    x = x or []

6.謹(jǐn)慎使用裝飾器

裝飾器可以在函數(shù)的參數(shù)或返回值上執(zhí)行任何操作,這可能導(dǎo)致讓人驚異的隱藏行為。而且, 裝飾器在導(dǎo)入時(shí)執(zhí)行,從裝飾器代碼中捕獲錯(cuò)誤并處理是很困難的。使用裝飾器一定要編寫單元測(cè)試,并且說(shuō)明它的作用和使用方法。裝飾器本身不要依賴于任何文件, socket, 數(shù)據(jù)庫(kù)連接。避免使用 @staticmedthod 裝飾器,多數(shù)情況下,將方法封裝成模塊級(jí)的函數(shù)可以達(dá)到同樣的效果。

7.建議使用類型聲明,類型聲明的好處非常明顯:

  • 使用類型聲明可以提高代碼的可讀性。
  • 也可以使用類型檢查工具提早發(fā)現(xiàn)問(wèn)題。
  • 使用類型聲明之后,doc string 中就沒有必要對(duì)參數(shù)類型進(jìn)行說(shuō)明。
  • 在編輯器中會(huì)根據(jù)類型進(jìn)行代碼提示。

但是在實(shí)際操作過(guò)程中,類型聲明往往很難維持。當(dāng)代碼更新完之后,一定要記得更新類型聲明,過(guò)時(shí)的類型聲明會(huì)對(duì)閱讀者造成誤導(dǎo)。python 的類型聲明成本學(xué)習(xí)成本較高。

  # yes
name: str = 'yuz'
def func(a: int) -> List[int]:

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Python sqrt()函數(shù)用法說(shuō)明

    Python sqrt()函數(shù)用法說(shuō)明

    這篇文章主要介紹了Python sqrt()函數(shù)用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • 使用Python創(chuàng)建websocket服務(wù)端并給出不同客戶端的請(qǐng)求

    使用Python創(chuàng)建websocket服務(wù)端并給出不同客戶端的請(qǐng)求

    本文主要介紹了使用Python創(chuàng)建websocket服務(wù)端并給出不同客戶端的請(qǐng)求,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Python列表list內(nèi)建函數(shù)用法實(shí)例分析【insert、remove、index、pop等】

    Python列表list內(nèi)建函數(shù)用法實(shí)例分析【insert、remove、index、pop等】

    這篇文章主要介紹了Python列表list內(nèi)建函數(shù)用法,結(jié)合具體實(shí)例形式分析了list中insert、remove、index、pop等函數(shù)的功能、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-07-07
  • 基于Python編寫一個(gè)ISBN查詢工具

    基于Python編寫一個(gè)ISBN查詢工具

    這篇文章主要為大家詳細(xì)介紹了如何利用Python編寫一個(gè)簡(jiǎn)單的ISBN查詢工具,可以用于圖書管理、圖書銷售、圖書收集和閱讀等場(chǎng)景,需要的可以參考一下
    2023-05-05
  • Python中的引用知識(shí)點(diǎn)總結(jié)

    Python中的引用知識(shí)點(diǎn)總結(jié)

    在本文里我們給大家整理了關(guān)于Python中的引用知識(shí)點(diǎn)以及相關(guān)代碼總結(jié),需要的朋友們跟著學(xué)習(xí)下。
    2019-05-05
  • Python學(xué)習(xí)開發(fā)之圖形用戶界面詳解

    Python學(xué)習(xí)開發(fā)之圖形用戶界面詳解

    當(dāng)前流行的計(jì)算機(jī)桌面應(yīng)用程序大多數(shù)為圖形化用戶界面(Graphic User Interface,GUI),python也提供了多個(gè)圖形開發(fā)界面的庫(kù),這篇文章主要給大家介紹了關(guān)于Python學(xué)習(xí)開發(fā)之圖形用戶界面的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Python使用Matplotlib繪制散點(diǎn)趨勢(shì)線的代碼詳解

    Python使用Matplotlib繪制散點(diǎn)趨勢(shì)線的代碼詳解

    Matplotlib是一個(gè)用于數(shù)據(jù)可視化的強(qiáng)大Python庫(kù),其基本功能之一是創(chuàng)建帶有趨勢(shì)線的散點(diǎn)圖,散點(diǎn)圖對(duì)于可視化變量之間的關(guān)系非常有用,本文將指導(dǎo)您使用Matplotlib繪制散點(diǎn)趨勢(shì)線的過(guò)程,涵蓋線性和多項(xiàng)式趨勢(shì)線,需要的朋友可以參考下
    2025-01-01
  • python語(yǔ)言實(shí)現(xiàn)貪吃蛇游戲

    python語(yǔ)言實(shí)現(xiàn)貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了python語(yǔ)言實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 使用70行Python代碼實(shí)現(xiàn)一個(gè)遞歸下降解析器的教程

    使用70行Python代碼實(shí)現(xiàn)一個(gè)遞歸下降解析器的教程

    這篇文章主要介紹了使用70行Python代碼實(shí)現(xiàn)一個(gè)遞歸下降解析器的教程,文章分步講解最后整合出代碼,需要的朋友可以參考下
    2015-04-04
  • python可視化分析繪制散點(diǎn)圖和邊界氣泡圖

    python可視化分析繪制散點(diǎn)圖和邊界氣泡圖

    這篇文章主要介紹了python可視化分析繪制散點(diǎn)圖和邊界氣泡圖,python繪制散點(diǎn)圖,展現(xiàn)兩個(gè)變量間的關(guān)系,當(dāng)數(shù)據(jù)包含多組時(shí),使用不同顏色和形狀區(qū)分
    2022-06-06

最新評(píng)論

梅州市| 淳安县| 余庆县| 托里县| 中方县| 赤水市| 开封市| 鄂州市| 沙湾县| 武隆县| 固原市| 三门峡市| 安国市| 娱乐| 锡林郭勒盟| 东兰县| 简阳市| 凤阳县| 句容市| 镇坪县| 桂阳县| 沂源县| 东乌珠穆沁旗| 平遥县| 拉孜县| 中西区| 连平县| 孟津县| 钦州市| 衡水市| 永善县| 霍州市| 平湖市| 句容市| 郎溪县| 武穴市| 顺平县| 信阳市| 子洲县| 曲靖市| 兴安盟|