国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

你做的 9 件事表明你不是專業(yè)的 Python 開發(fā)人員

這篇具有很好參考價(jià)值的文章主要介紹了你做的 9 件事表明你不是專業(yè)的 Python 開發(fā)人員。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

本文轉(zhuǎn)載自國外論壇 medium,原文地址:
https://medium.com/navan-tech/7-java-features-you-might-not-have-heard-of-adee8166d942,由博主簡譯后給大家?guī)?

Show me your code and I will tell you who you are.

This article will fix the bad habits you have stuck to over the years or brought from other programming languages.

是的,老外就這么吊,文章開頭就是"給我看看你的代碼,我來告訴你,你有幾斤幾兩!"
緊接著,老外告訴你這篇文章為什么這么吊,意思是這篇文章可以糾正你多年以來從其他語言堅(jiān)持而來的壞習(xí)慣。。。雖然博主確實(shí)編了幾年程序。

一、手動(dòng)格拼接字符串

大多數(shù)時(shí)候,Python 初學(xué)者在組合兩個(gè)字符串時(shí)會(huì)使用 + 號(hào)。

>>> name = "Ridwan"
>>> age = "22"
>>> print("My Name is " + name + " and I am " + age + " years old")
My Name is Ridwan and I am 22 years old

不要使用 + 號(hào),而應(yīng)使用 f 字符串,這樣可以使您的代碼可讀、簡潔且不易出錯(cuò)。python3.6+開始支持 f 格式字符串

>>> print(f"My Name is {name} and I am {age} years old")
My Name is Ridwan and I am 22 years old

二、使用默認(rèn)可變參數(shù)

在 Python 中,只要您將可變值作為參數(shù)傳遞給函數(shù),默認(rèn)參數(shù)就會(huì)在函數(shù)被調(diào)用時(shí)發(fā)生變化。這些可變參數(shù)通常是列表或字典。

如下:

>>> def append(n, l=[]):
...     l.append(n)
...     return l
...

可以看到 append 函數(shù)的第二個(gè)參數(shù) l 是一個(gè)可變參數(shù),只要您使用值為 n 調(diào)用該函數(shù),它就會(huì)更改默認(rèn)值 l。

// 第一次調(diào)用
>>> l1 = append(0)
>>> l1
[0]

當(dāng)您下次在調(diào)用 append 函數(shù)時(shí),您將看到您使用的先前值附加到空列表參數(shù)。

// 第二次調(diào)用
>>> l2 = append(1)
>>> l2
[0, 1]

簡而言之也就是說由于 l 在 append 函數(shù)中被默認(rèn)初始化為一個(gè) list,第二次調(diào)用時(shí),l 并沒有重置,導(dǎo)致返回時(shí)還帶有第一次調(diào)用的結(jié)果。

這個(gè)問題可以通過重寫代碼來解決,

>>> def append(n, l = None):
...     if l is None:
...         l = []
...     l.append(n)
...     return l
...
>>> l1 = append = [0]
>>> l2 = append = [1]
>>> l1,l2
([0], [1])

現(xiàn)在參數(shù) l 被設(shè)置為 None,任何時(shí)候函數(shù)被調(diào)用,即使 l 發(fā)生了變化,它也會(huì)被重新分配為 None,然后給出一個(gè)空列表的值。

三、不使用推導(dǎo)式

Python 推導(dǎo)式 為您提供了一種構(gòu)建序列的簡潔方式,上次我檢查過,Python 支持 4 種類型的推導(dǎo)式;

  • 列表推導(dǎo)式
  • 集體推導(dǎo)式
  • 字典推導(dǎo)式
  • 生成器推導(dǎo)式

你可以在這里閱讀更多關(guān)于他們的信息。

下面的代碼將字典中的值除以 2,

>>> numbers = {}
>>> for i in range(10):
...     numbers[i] = i/2
...
>>> numbers
{0: 0.0, 1: 0.5, 2: 1.0, 3: 1.5, 4: 2.0, 5: 2.5, 6: 3.0, 7: 
3.5, 8: 4.0, 9: 4.5}

上面的代碼可以寫成一行,

>>> {i: i/2 for i in range(10)}
{0: 0.0, 1: 0.5, 2: 1.0, 3: 1.5, 4: 2.0, 5: 2.5, 6: 3.0, 7: 
3.5, 8: 4.0, 9: 4.5}

所以不要讓自己過得不好,開始使用推導(dǎo)式。

推導(dǎo)式確實(shí)算是 python 開發(fā)一大利器,用好推導(dǎo)式,早下班!

四、檢查 Equality 而不是 Identity

如下,

a = [1, 2, 3]
b = [1, 2, 3]

如果我讓你檢查這兩個(gè)變量是否相同,你首先想到的是,

>>> a == b
True

問題是你需要知道 Identity 和 Equality 之間的區(qū)別。

如果檢查a和b的內(nèi)存地址,

>>> id(a), id(b)
(1838093945856, 1838093487488)

您可以看到盡管它們具有相同的對(duì)象,但它們都有不同的內(nèi)存地址。

這就是為什么當(dāng)你運(yùn)行代碼時(shí),

>>> a == b
True
You get True, but when you run

>>> a is b
False

當(dāng)你調(diào)用 a is b 返回 False時(shí),a 和 b 就不是相等的了。

在運(yùn)行如下代碼,

>>> c = [1,2,3]
>>> d = c
>>> id(c), id(d)
(1838089019712, 1838089019712)

可以看到,c和d是相等且相同的,c中的對(duì)象也被賦值給了d。

>>> c == d
True
>>> c is d
True

這意味著 c 和 d 具有相同的值和內(nèi)存地址。

因此你可以說 c 是相同的并且等于 d。

寫這篇文章就是為了讓你知道 is 和 == 的區(qū)別,前者是用來檢查 identity ,后者是用來檢查 equality 的。

所有相同的變量都相等,但并非所有相等的變量都相同。

這一段看著有點(diǎn)繞,說人話就是 == 比較的是連個(gè)變量的值是否相等,is 比較的是兩個(gè)比變量的內(nèi)存地址相等!,我相信大伙都明白哈,不然白看了這么多年八股文。

五、不使用元組解包

任何時(shí)候你在 Python 中創(chuàng)建一個(gè)元組 a_tuple = 1,2,3 ,它會(huì)默認(rèn)進(jìn)行元組打包,

>>> a_tuple = 1,2,3
>>> a_tuple
(1, 2, 3)

然后可以通過索引訪問元組內(nèi)元素

>>> x = a_tuple[0]
>>> y = a_tuple[1]
>>> z = a_tuple[2]
>>> print(x, y, z)
1, 2, 3

其實(shí)無需使用多行代碼訪問元組中的元素,您可以通過元組解包自動(dòng)在一行代碼中完成。

>>> x,y,z = a_tuple
>>> print(x, y, z)
1, 2, 3

元組解包也是 python 中常用的開發(fā)技巧,提升開發(fā)效率。

六、創(chuàng)建您自己的索引計(jì)數(shù)器變量

這個(gè)在其他編程語言中很常見,你被要求創(chuàng)建一個(gè)索引計(jì)數(shù)器變量,然后你輸入類似的東西;

>>> a_list = [1,2,3,4,5,6,7,8,9,10]
>>> index = 0
>>> for elem in a_list:
...     print(index, elem)
...     index += 1
...
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10

相反,使用 enumerate 函數(shù)使您的代碼看起來像 Pythonic(這里指寫出python風(fēng)格的代碼);

>>> for index, elem in enumerate(a_list):
...     print(index, elem)
...
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10

這里批評(píng)下 Java,這么多年了,foreach 循環(huán)也拿不到索引。

七、使用 Print 語句代替日志記錄模塊

這在小型項(xiàng)目中可能無關(guān)緊要,但肯定會(huì)對(duì)大型項(xiàng)目有所幫助。

不要用打印語句亂扔代碼,而是使用日志記錄。

>>> print('This is a warning message')
This is a warning message
>>> print('This is an error message')
This is an error message
>>> print('This is a critical message')
This is a critical message

日志記錄有助于向您的用戶顯示有用的消息,以增加對(duì)代碼庫中發(fā)生的事情的更多上下文和理解。

>>> import logging
>>> logging.warning('This is a warning message')
WARNING:root:This is a warning message
>>> logging.error('This is an error message')
ERROR:root:This is an error message
>>> logging.critical('This is a critical message')
CRITICAL:root:This is a critical message

這年頭還有人在線上不用文件記錄日志嗎?有的話告訴我一聲,
我肯定拿刀找他!

八、使用 import * 在命名模塊中導(dǎo)入函數(shù)和類

這種壞習(xí)慣有時(shí)在新手中很常見。

使用 import * 導(dǎo)入會(huì)破壞您的命名空間,方法是將該命名模塊中的所有函數(shù)和類導(dǎo)入您的代碼,這可能會(huì)與您定義的函數(shù)或?qū)氲钠渌麕斓暮瘮?shù)發(fā)生沖突。

反正博主從來不用 import *,至于你用不用我不知道,但是我建議你不要用。

九、不關(guān)注 pep8

pep8就是Python官方指定的編碼規(guī)范

我們大多數(shù)人都犯了這個(gè)罪,

我承認(rèn)我有罪

在我被取消之前??,我知道我在這篇文章中的一些代碼可能違反了 PEP-8 的規(guī)則,但事實(shí)是痛苦的,需要被告知,遵循 PEP-8 風(fēng)格和指南讓其他人更容易閱讀并理解你的代碼。

老外的這篇文章在 medium 的郵件推薦中,可能老外知道自己這篇文章的示例代碼也違反了 pep8 規(guī)范,怕被取消推薦了,我猜的,不保真。

不推薦

>>> def function():
...     x = [1,2,3]
...     y= [2,3,5]
...     z = [1, 2,3]
...
>>> def value(x = 7):
...     ...
...

推薦

>>> def function():
...     x = [1, 2, 3]
...     y = [2, 3, 5]
...     z = [1, 2, 3]
...
>>> def number(x=7):
...     ...
...

要閱讀更多關(guān)于 PEP-8 風(fēng)格和指南的信息,請(qǐng)查看這篇文章 https://realpython.com/python-pep8/。

感謝閱讀,希望這篇文章值得你花時(shí)間。

公眾號(hào)【waynblog】每周更新博主最新技術(shù)文章,歡迎大家關(guān)注文章來源地址http://www.zghlxwxcb.cn/news/detail-410933.html

到了這里,關(guān)于你做的 9 件事表明你不是專業(yè)的 Python 開發(fā)人員的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 不是測試人員的“鍋”,要怎么“甩”?

    不是測試人員的“鍋”,要怎么“甩”?

    作為資深測試人員,你是不是經(jīng)常聽到這樣的話,為什么這么LOW的BUG會(huì)出現(xiàn)在客戶手上?為什么功能沒測完就發(fā)給客戶測?這個(gè)BUG不是代碼問題,需求是這么定的?這個(gè)需求不合理,開發(fā)表示拒絕,等等需要測試背的“鍋”。 所以從一開始,測試就要關(guān)注需求。往往在討論設(shè)

    2024年02月16日
    瀏覽(19)
  • 一文帶你了解注冊(cè)信息安全專業(yè)人員CISP

    一文帶你了解注冊(cè)信息安全專業(yè)人員CISP

    CISP即\\\"注冊(cè)信息安全專業(yè)人員\\\",系國家對(duì)信息安全人員資質(zhì)的最高認(rèn)可。英文為Certified Information Security Professional (簡稱CISP),CISP系經(jīng)中國信息安全測評(píng)中心實(shí)施國家認(rèn)證。 CISP證書涵蓋方向: “注冊(cè)信息安全工程師”,英文為Certified Information Security Engineer,簡稱 CISE。證書持

    2024年02月02日
    瀏覽(25)
  • 黑客和安全專業(yè)人員最重要的網(wǎng)絡(luò)滲透測試工具

    導(dǎo)語:在這里您可以找到涵蓋在所有環(huán)境中執(zhí)行滲透測試操作的綜合網(wǎng)絡(luò)安全工具列表。 · OpenVAS – OpenVAS是一個(gè)包含多種服務(wù)和工具的框架,可提供全面而強(qiáng)大的漏洞掃描和漏洞管理解決方案。 · Metasploit Framework – 針對(duì)遠(yuǎn)程目標(biāo)計(jì)算機(jī)開發(fā)和執(zhí)行漏洞攻擊代碼的最佳網(wǎng)絡(luò)安

    2024年02月06日
    瀏覽(23)
  • 項(xiàng)目管理專業(yè)人員能力評(píng)價(jià)等級(jí)證書(CSPM)的級(jí)別介紹

    項(xiàng)目管理專業(yè)人員能力評(píng)價(jià)等級(jí)證書(CSPM)的級(jí)別介紹

    2021年10月, 中共中央、國務(wù)院 發(fā)布的 《國家標(biāo)準(zhǔn)化發(fā)展綱要》 明確提出構(gòu)建多層次從業(yè)人員培養(yǎng)培訓(xùn)體系,開展專業(yè)人才培養(yǎng)培訓(xùn)和國家質(zhì)量基礎(chǔ)設(shè)施綜合教育。建立健全人才的職業(yè)能力評(píng)價(jià)和激勵(lì)機(jī)制。由 中國標(biāo)準(zhǔn)化協(xié)會(huì)(CAS) 組織開展的 項(xiàng)目管理專業(yè)人員能力評(píng)價(jià)等

    2024年02月08日
    瀏覽(19)
  • CBP認(rèn)證是什么?區(qū)塊鏈專業(yè)人員認(rèn)證含金量大嗎?

    (1)CBP是什么? CBP(Certified Blockchain Professional)即區(qū)塊鏈專業(yè)人員認(rèn)證,涵蓋最新的區(qū)塊鏈原理與實(shí)踐知識(shí)。旨在為IT從業(yè)人員在數(shù)字化時(shí)代下提供全面的區(qū)塊鏈原理及安全思維,理解和掌握區(qū)塊鏈、密碼技術(shù)、共識(shí)機(jī)制、激勵(lì)機(jī)制、智能合約、P2P網(wǎng)絡(luò)等的基本原理和實(shí)踐應(yīng)用

    2024年02月13日
    瀏覽(21)
  • CSPM項(xiàng)目管理專業(yè)人員能力等級(jí)評(píng)價(jià)各級(jí)考試題目由什么構(gòu)成?

    CSPM項(xiàng)目管理專業(yè)人員能力等級(jí)評(píng)價(jià)各級(jí)考試題目由什么構(gòu)成?

    2021年10月, 中共中央、國務(wù)院 發(fā)布的 《國家標(biāo)準(zhǔn)化發(fā)展綱要》 明確提出構(gòu)建多層次從業(yè)人員培養(yǎng)培訓(xùn)體系,開展專業(yè)人才培養(yǎng)培訓(xùn)和國家質(zhì)量基礎(chǔ)設(shè)施綜合教育。建立健全人才的職業(yè)能力評(píng)價(jià)和激勵(lì)機(jī)制。由 中國標(biāo)準(zhǔn)化協(xié)會(huì)(CAS) 組織開展的 項(xiàng)目管理專業(yè)人員能力評(píng)價(jià)等

    2024年02月08日
    瀏覽(19)
  • 計(jì)算機(jī)行業(yè)是不是最掙錢的?非專業(yè)能進(jìn)這一行嗎?

    計(jì)算機(jī)行業(yè)是不是最掙錢的?非專業(yè)能進(jìn)這一行嗎?

    掙錢是每個(gè)人進(jìn)入社會(huì)后的主要目標(biāo),想要掙大錢,就一定要進(jìn)入一個(gè)熱門行業(yè),很多人都問過大使,計(jì)算機(jī)行業(yè)是不是現(xiàn)在掙錢的行業(yè),其實(shí)這句話對(duì)也不對(duì),現(xiàn)在最掙錢的行業(yè)肯定是娛樂業(yè),但是對(duì)于我們普通人來說,想要在短時(shí)間掙錢,計(jì)算機(jī)行業(yè)肯定是不二的選擇。

    2024年02月05日
    瀏覽(26)
  • 面向?qū)I(yè)開發(fā)者的Python IDE——PyCharm,各個(gè)版本如何抉擇?

    PyCharm是一個(gè)專業(yè)的Python集成開發(fā)環(huán)境(IDE),為Python開發(fā)人員提供了廣泛的基本工具,緊密集成為高效的Python、Web和數(shù)據(jù)科學(xué)開發(fā)創(chuàng)建了一個(gè)方便的環(huán)境。 PyCharm v2022.2正式版下載 (技術(shù)交流Q:786598704) 選擇最適合自己的PyCharm版本 PyCharm有三個(gè)版本: 社區(qū)版 (免費(fèi)且開源):用

    2024年02月08日
    瀏覽(28)
  • 簡易操作系統(tǒng):使用Python 做的圖形界面 C 做的內(nèi)核

    簡易操作系統(tǒng):使用Python 做的圖形界面 C 做的內(nèi)核

    目錄 實(shí)驗(yàn)要求 一、文件管理和用戶接口 ⑴文件的邏輯結(jié)構(gòu) ⑵磁盤模擬 ⑶目錄結(jié)構(gòu) ⑷磁盤分配 ⑸磁盤空閑存儲(chǔ)空間管理 ⑹用戶接口 ⑺屏幕顯示 ?代碼部分 ? ? ? ? python調(diào)用c的方法: ?編輯 c語言部分,文件名 Operating_System_C.c python語言部分 運(yùn)行實(shí)例: ?? 文件管理和用戶

    2024年02月08日
    瀏覽(15)
  • 紀(jì)念一下自己做的第一款開發(fā)板

    紀(jì)念一下自己做的第一款開發(fā)板

    前言:之前樂鑫搞活動(dòng)白嫖了10個(gè)ESP32-S2模組,想著把它給利用了,然后先從一個(gè)開發(fā)板做起,等玩明白了再去做一些自己的設(shè)計(jì),從網(wǎng)上找了一些資料就開始干,中途也是遇到了一些問題,有的解決了,有的還沒解決,如果有懂的大佬,歡迎指點(diǎn)一下。 這款開發(fā)板參考樂鑫

    2024年02月04日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包