欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

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

2.從根目錄導入,不假定任意的 sys.path,也不使用相對導入。

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

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

3.謹慎使用異常

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

  • 優(yōu)先合理的使用內(nèi)置異常類。比如需要正數(shù)的情況下傳遞了一個負數(shù)引發(fā)的錯誤,拋出 ValueError 類型。
  • 永遠不要使用 except 捕獲所有的異常,這可能會造成一些隱藏 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ù)默認值,如果修改了這個變量,默認值也會跟著發(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.注意條件表達式的隱式布爾值

  • 對于序列(字符串, 列表, 元組), 要注意空序列是 False,在判斷是否為空序列時,使用隱性的 if not seq 判斷,而不用 if len(seq) == 0;
  • 判斷數(shù)字是否為 0,則使用 number == 0,而不使用用 if not number。因為 number 可能設(shè)置的是默認值為 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.謹慎使用裝飾器

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

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

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

但是在實際操作過程中,類型聲明往往很難維持。當代碼更新完之后,一定要記得更新類型聲明,過時的類型聲明會對閱讀者造成誤導。python 的類型聲明成本學習成本較高。

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

總結(jié)

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

相關(guān)文章

  • TensorFlow獲取加載模型中的全部張量名稱代碼

    TensorFlow獲取加載模型中的全部張量名稱代碼

    今天小編就為大家分享一篇TensorFlow獲取加載模型中的全部張量名稱代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python+PyQt5實現(xiàn)自動點擊神器

    Python+PyQt5實現(xiàn)自動點擊神器

    這篇文章主要為大家詳細介紹了如何利用Python和PyQt5實現(xiàn)自動點擊神器,旨在解決重復性的點擊工作,解放雙手,具有及時性和準確性,需要的可以參考下
    2024-01-01
  • django中顯示字符串的實例方法

    django中顯示字符串的實例方法

    在本篇文章里小編給大家整理了一篇關(guān)于django中顯示字符串的實例方法,有興趣的朋友們可以跟著學習參考下。
    2021-03-03
  • 使用Python腳本對GiteePages進行一鍵部署的使用說明

    使用Python腳本對GiteePages進行一鍵部署的使用說明

    剛好之前有了解過python的自動化,就想著自動化腳本,百度一搜還真有類似的文章。今天就給大家分享下使用Python腳本對GiteePages進行一鍵部署的使用說明,感興趣的朋友一起看看吧
    2021-05-05
  • 如何通過Flask的request對象獲取url

    如何通過Flask的request對象獲取url

    這篇文章主要介紹了如何通過Flask的request對象獲取url問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 一文帶你了解Python中的生成器和迭代器

    一文帶你了解Python中的生成器和迭代器

    生成器(Generators)和迭代器(Iterators)是 Python 中用于處理序列數(shù)據(jù)的強大工具,本文主要來和大家介紹一下它們的具體使用,方便大家更好的了解它們,需要的可以學習下
    2022-03-03
  • python模擬實現(xiàn)圖書管理系統(tǒng)

    python模擬實現(xiàn)圖書管理系統(tǒng)

    這篇文章主要為大家詳細介紹了python模擬實現(xiàn)圖書管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Python django框架 web端視頻加密的實例詳解

    Python django框架 web端視頻加密的實例詳解

    這篇文章主要介紹了Python django框架 web端視頻加密,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Pandas DataFrame數(shù)據(jù)存儲格式比較分析

    Pandas DataFrame數(shù)據(jù)存儲格式比較分析

    Pandas 支持多種存儲格式,在本文中將對不同類型存儲格式下的Pandas Dataframe的讀取速度、寫入速度和大小的進行測試對比,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2023-09-09
  • 關(guān)于不懂Chromedriver如何配置環(huán)境變量問題解決方法

    關(guān)于不懂Chromedriver如何配置環(huán)境變量問題解決方法

    這篇文章主要介紹了關(guān)于不懂Chromedriver如何配置環(huán)境變量問題解決方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06

最新評論