自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

五年P(guān)ython三大秘訣!日常生活不可或缺的秘密武器

開(kāi)發(fā) 后端
筆者編寫Python代碼已經(jīng)5年多了,經(jīng)歷這么久,工具集沒(méi)有變大,反而越來(lái)越小。工具不在多,好用就行。這三種方法筆者已經(jīng)堅(jiān)持使用了很長(zhǎng)時(shí)間,和其他方法不同的是,使用它們的頻率只增不減。你值得擁有!

本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)

大浪淘沙沉者為金。筆者編寫Python代碼已經(jīng)5年多了,經(jīng)歷這么久,工具集沒(méi)有變大,反而越來(lái)越小。工具不在多,好用就行。這三種方法筆者已經(jīng)堅(jiān)持使用了很長(zhǎng)時(shí)間,和其他方法不同的是,使用它們的頻率只增不減。你值得擁有!

[[325553]]

一、秘密武器#1:快速編碼,少用Kite谷歌

大多數(shù)代碼編輯器都具有類似這樣的自動(dòng)填充功能,...使用某種語(yǔ)言(庫(kù))文檔來(lái)表明函數(shù)名和參數(shù):

五年P(guān)ython三大秘訣!日常生活不可或缺的秘密武器

這不難,但如果編輯器可以瀏覽幾年的GitHub數(shù)據(jù),并且不僅僅能自動(dòng)填充函數(shù)名稱,還能完成整行代碼呢?這僅是第一個(gè)使用Kite的理由。

原因 1:代碼行填充

Kite訪問(wèn)代碼庫(kù)和各個(gè)變量、常用的在線參數(shù)名稱以及文檔后,會(huì)輸出優(yōu)質(zhì)的語(yǔ)境建議:

五年P(guān)ython三大秘訣!日常生活不可或缺的秘密武器

圖源:Kite docs

上圖示例展示了Kite如何能預(yù)測(cè)編碼者需要使用的變量,即使它們一般被命名為(如b),或更普遍的名字(如x或y)。

Kite創(chuàng)始人兼首席執(zhí)行官Adam Smith說(shuō):“我們?cè)贕ithub 上已經(jīng)用了50多年的時(shí)間來(lái)對(duì)所有代碼進(jìn)行語(yǔ)義索引,構(gòu)建統(tǒng)計(jì)類型推理,以及深度使用此語(yǔ)義信息的豐富統(tǒng)計(jì)模型。”

原因 2:在本地私密運(yùn)行

最重要的是,它在本地運(yùn)行,因此可以快速獲得提示,離線也能工作,并且代碼不會(huì)發(fā)送到云端。

對(duì)于網(wǎng)絡(luò)情況異常和在閉信源代碼庫(kù)工作的人來(lái)說(shuō),這一點(diǎn)非常重要。

原因 3:文檔編程助手

五年P(guān)ython三大秘訣!日常生活不可或缺的秘密武器

如果你從來(lái)沒(méi)聽(tīng)過(guò)"RTFM"這個(gè)詞,那可能因?yàn)闆](méi)有在第一代開(kāi)發(fā)者身邊工作過(guò)。

向高級(jí)開(kāi)發(fā)人員討教是很有必要的,甚至去StackOverflow查找答案之前閱讀文檔。Kite Copilot讓文檔變得十分簡(jiǎn)單,其與編輯器同時(shí)運(yùn)行,實(shí)時(shí)顯示文檔中光標(biāo)掠過(guò)的任何對(duì)象/函數(shù)等。

結(jié)果

筆者使用Kite多年,它改進(jìn)得也越來(lái)越好。其擁有超過(guò)1,700萬(wàn)美元的投資,不會(huì)輕易倒閉,而且它的工具是完全免費(fèi)的。你只需要給編輯器下載Kite插件,或下載copilot(編碼助手),就能安裝插件。

二、秘密武器#2:用Mypy檢查代碼‍

編碼Python 是動(dòng)態(tài)的,簡(jiǎn)單解釋就是:編碼者可以隨時(shí)將任何變量變?yōu)槿魏螖?shù)據(jù)類型(字符串、整數(shù)等)。

  1. # These two variable types aredeclared the exact same way 
  2. # Python figures out the data type on it's own, dynamically# string 
  3. var_name = "string here"# integer 
  4. var_name = 1234 

相對(duì)的是靜態(tài)類型的語(yǔ)言,其中它的變量必須有一個(gè)特定的數(shù)據(jù)類型,并且始終遵循它。

  1. # Many languages require the datatype to be declared too# string 
  2. str var_name = "string here"# integer 
  3. int var_name = 1234 

1. 動(dòng)態(tài)編碼的優(yōu)點(diǎn)/缺點(diǎn)

動(dòng)態(tài)編碼的優(yōu)點(diǎn)是,你可以偷懶,并且能減少亂碼。但它缺點(diǎn)很多且不?。?/p>

  • 通常在開(kāi)發(fā)周期后期會(huì)出現(xiàn)錯(cuò)誤
  • 由于Python不斷計(jì)算類型,編碼效果會(huì)降低
  • 傳遞代碼更不穩(wěn)定,因?yàn)槠渌丝赡懿恢榔渲械淖兞渴悄男┗蚩赡艹蔀槟男?shù)據(jù)類型
  • 函數(shù)會(huì)更不穩(wěn)定,因?yàn)樗鼈兊妮斎牒洼敵隹梢栽跊](méi)有警告的情況下更改數(shù)據(jù)類型

2. Python 中的靜態(tài)鍵入

打開(kāi)Mypy,這是一個(gè)免費(fèi)的Python模塊,讓你能在Python 內(nèi)部靜態(tài)編碼。發(fā)出pip install mypy指令后, 下面就是其使用示例:

  1. # Declaring a function using normaldynamic typing, without mypy 
  2. def iter_primes(): 
  3.     # code here# Declaring the samefunction with mypy static typing 
  4. from typing import Iteratordef iter_primes() -> Iterator[int]: 
  5.     # code here 

利用mypy 示例,能指定函數(shù)返還整數(shù)的迭代器。這種簡(jiǎn)單變化通過(guò)強(qiáng)制實(shí)施一致輸出,使函數(shù)更具有預(yù)測(cè)性。

與僅使用文檔不同,其他開(kāi)發(fā)人員只需查看輸出的將是什么數(shù)據(jù)類型,如果不符合該定義,則代碼出錯(cuò)。

3. 結(jié)果

列出靜態(tài)類型以幫你減輕將來(lái)痛苦的所有方法有難度,但mypy文檔具有出色的解答常見(jiàn)問(wèn)題的能力,優(yōu)缺點(diǎn)都不少。

如果你在一個(gè)把穩(wěn)定性放在第一位的代碼生產(chǎn)庫(kù)工作,一定要試試myby。

三、秘密武器#3:用Sonarlint快速查找錯(cuò)誤,編寫更簡(jiǎn)單的函數(shù)

現(xiàn)在每個(gè)編輯器都有某種類型的錯(cuò)誤檢查或內(nèi)置的"linter",可以用來(lái)查看代碼,通常無(wú)需運(yùn)行,并能預(yù)測(cè)可能存在的錯(cuò)誤。這就是靜態(tài)代碼分析。

五年P(guān)ython三大秘訣!日常生活不可或缺的秘密武器

VS代碼中的默認(rèn) Python Linter

動(dòng)態(tài)代碼分析實(shí)際上嘗試運(yùn)行/編譯代碼的某些部分,以查看其是否正常工作,但它會(huì)自動(dòng)在后臺(tái)運(yùn)行。它不是猜測(cè),它事實(shí)上知道代碼是否會(huì)出錯(cuò),以及確切的錯(cuò)誤是什么。

SonarLint是動(dòng)態(tài)代碼分析中最好的,有超多優(yōu)點(diǎn):

1. 已注釋或未命名的代碼

對(duì)于代碼庫(kù)里滿滿的輸出定義、已注釋代碼,以及未使用的函數(shù),筆者十分愧疚。但正是如此,才會(huì)時(shí)刻警醒,留下深刻印象,方便查找。

2. 不執(zhí)行命令代碼

與未命名的代碼略有不同,不執(zhí)行命令代碼將會(huì)在編碼者創(chuàng)建不可能評(píng)估時(shí)發(fā)出預(yù)警。這十分有必要,否則會(huì)導(dǎo)致進(jìn)行幾個(gè)小時(shí)的調(diào)試,這是筆者最喜歡的預(yù)警之一。

示例:

  1. a = Noneif a == None or not a or a: 
  2.     this_will_always_get_called() 
  3. else: 
  4.     # sonarlint will warn you about thisline never being executed 
  5.     this_will_never_get_called() 

3. 安全風(fēng)險(xiǎn)

代碼庫(kù)中的巨大數(shù)據(jù)庫(kù)將不斷實(shí)時(shí)更新安全風(fēng)險(xiǎn),能警告使用者所面臨的任何已知漏洞風(fēng)險(xiǎn)。

安全風(fēng)險(xiǎn)問(wèn)題是小概率事件,基本不可能給我們留下印象。因此,每個(gè)人都應(yīng)該行動(dòng)起來(lái)持續(xù)追蹤。SonarLint是一個(gè)偉大的開(kāi)端。

[[325554]]

圖源:unsplash

4. 認(rèn)知復(fù)雜

這個(gè)話題十分有趣,筆者可以針對(duì)它寫一篇完整的文章。

簡(jiǎn)單解釋就是,有人創(chuàng)建了一個(gè)數(shù)學(xué)公式,這個(gè)公式可以對(duì)代碼的閱讀/理解難易程度進(jìn)行評(píng)分。

它非常有用,還易于理解。每次SonarLint要求編碼者"降低認(rèn)知復(fù)雜性"時(shí),它都會(huì)對(duì)編碼者的不規(guī)范操作簡(jiǎn)單解釋,比如"無(wú)法定義,嵌套異常"。

5. 結(jié)果

筆者發(fā)現(xiàn)這比基礎(chǔ)屏蔽和lint練習(xí)更有用,編碼者也能編寫更為人性化的代碼。這就是Pythonic!!

心動(dòng)不如行動(dòng),趕快用起來(lái)吧! 

 

責(zé)任編輯:趙寧寧 來(lái)源: 讀芯術(shù)
相關(guān)推薦

2022-07-19 11:31:59

數(shù)據(jù)

2025-03-20 07:13:25

2019-08-05 10:00:13

LinuxBash命令

2012-04-18 17:06:41

PhoneGap

2013-10-16 09:28:14

亞馬遜AWSSDN

2014-12-16 18:56:05

聯(lián)想

2013-10-16 09:33:36

亞馬遜AWSSDN

2020-05-07 18:20:52

Git腳本Linux開(kāi)源

2024-08-20 13:43:48

2011-06-02 09:18:49

iOS 5iOS蘋果

2020-02-27 16:32:55

企業(yè)監(jiān)控數(shù)據(jù)

2013-09-18 09:40:32

企業(yè)BYOD企業(yè)應(yīng)用商店

2022-04-12 15:49:46

IT領(lǐng)導(dǎo)者技能

2014-01-07 10:46:39

2011-08-11 17:05:26

2024-07-11 08:34:48

2024-12-03 10:55:56

微服務(wù)架構(gòu)注冊(cè)中心

2024-07-30 11:57:53

2022-02-11 10:47:17

CIOIT團(tuán)隊(duì)企業(yè)

2023-06-08 09:27:28

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)