<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          成為編碼藝術(shù)家?聽說過Python“一行流”嗎

          共 3551字,需瀏覽 8分鐘

           ·

          2021-10-21 09:42

          所謂一行流,就是把一個(gè)功能用一行代碼去實(shí)現(xiàn)。Python的一行流既保證了代碼的簡潔,又不會犧牲很大的可讀性。但一個(gè)看似如此簡單的事情,如果不徹底掌握這門編程語言,是很難做到的。

          我認(rèn)為,Python 一行流能夠幫助你提高編碼技能,值得去學(xué)習(xí),其原因還有下面五個(gè)。

          ◎?首先,通過提升你對 Python 核心技術(shù)的認(rèn)知,可以克服許多一直在拖你后腿的編程弱點(diǎn)。沒有對基礎(chǔ)知識的深入理解,很難取得進(jìn)步。單行代碼是所有程序的基礎(chǔ)構(gòu)件,徹底理解這些基本構(gòu)件之后,你才有能力駕馭高階的復(fù)雜程序,而不會感到不知所措。

          ◎?其次,你會學(xué)到如何利用當(dāng)今正瘋狂流行的熱門 Python 庫,比如數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)用到的那些庫。本書由五個(gè)介紹單行技術(shù)的章節(jié)組成,每個(gè)都涉及 Python 的不同領(lǐng)域,從正則表達(dá)式到機(jī)器學(xué)習(xí)。這種方式會讓你對你可以構(gòu)建的 Python 應(yīng)用有一個(gè)概覽,同時(shí)也會教你如何使用這些強(qiáng)大的庫。

          ◎?第三,你會學(xué)到怎樣寫出更加“Pythonic”的代碼。Python 初學(xué)者,尤其是從其他編程語言過來的人,經(jīng)常會用不 Pythonic 的方式去編寫代碼。我們會涵蓋 Python 特有的一些概念,諸如列表解析、多重賦值、切片等,所有這些都會幫你寫出可讀性高、便于跟相同領(lǐng)域的程序員共享的代碼。

          ◎?第四,學(xué)習(xí) Python 單行技術(shù),會迫使你用簡潔、清晰的方式去思考。若你不得不把每個(gè)代碼字符都利用到極致,就沒有空間去容納那些稀稀拉拉、不明重點(diǎn)的代碼了。

          ◎?第五,你的單行代碼新技能使你能夠看穿那些設(shè)計(jì)過于復(fù)雜的 Python 代碼庫,并讓你的朋友和面試官留下深刻印象。你可能會發(fā)現(xiàn),用一行代碼解決具有挑戰(zhàn)性的編程問題,既好玩,效果又令人滿意。而且你不是一個(gè)人:一個(gè)活躍的 Python 極客社群一直在競爭誰能寫出最簡短、最 Pythonic 的代碼來解決各種各樣的實(shí)際(或不太實(shí)際的)問題。

          Python一行流的例子

          學(xué)習(xí) Python 單行技術(shù)既是理解更高級代碼庫的基礎(chǔ),也是提升自身技能的絕佳工具。在理解幾千行代碼組成的代碼庫到底寫了些什么之前,必須先了解一行代碼的含義。

          讓我們先來快速看一眼 Python 一行流

          q = lambda l: q(u[x for x in l[1:] if x <= l[0]]) + [l[0]] + q([x for x in l if x > l[0]]) if l else []


          這個(gè)單行程序?qū)χ目焖倥判蛩惴ㄗ隽藘?yōu)美而簡潔的壓縮,不過對于很多初級或中級的 Python 使用者來說,其具體含義可能還難以掌握。

          Python 單行程序經(jīng)常是在已有基礎(chǔ)上搭建而成的,所以在后面中出現(xiàn)的單行程序,復(fù)雜度會逐漸增加。我們將從簡單的單行程序開始,這些簡單的語句將成為之后更加復(fù)雜的程序的基礎(chǔ)。比如說,前面的一行流快速排序基于列表解析,但看起來又長又難。下面是一個(gè)比較簡單的列表解析,用于創(chuàng)建一個(gè)平方數(shù)的列表。

          lst = [x**2 for x in range(10)]

          我們還可以把這個(gè)單行程序分解成更簡單的單行,用于介紹重要的 Python 基礎(chǔ)知識,如變量賦值、數(shù)學(xué)運(yùn)算符、數(shù)據(jù)結(jié)構(gòu)、for循環(huán),成員運(yùn)算符,以及 range() 函數(shù)——所有這些都出現(xiàn)在一行簡單的 Python 程序中!

          要知道,基礎(chǔ),并不意味著瑣碎或不重要。我們即將見到的所有單行程序都很有用,而且每章會針對計(jì)算機(jī)科學(xué)中的一個(gè)獨(dú)立學(xué)科或領(lǐng)域,讓你從一個(gè)寬闊的視野全面了解 Python 的力量。

          關(guān)于可讀性的說明


          《Python 之禪》(The Zen of Python)中包含了 Python 編程語言的19條指導(dǎo)原則。可以通過在 Python 命令行里輸入 import this 來閱讀它:

          >>> import thisThe Zen of Python, by Tim Peters
          Beautiful is better than ugly.Explicit is better than implicit.Simple is better than complex.Complex is better than complicated.Flat is better than nested.Sparse is better than dense. Readability counts.--下略--


          如《Python之禪》所言,“可讀性很重要(Readability counts)”,單行程序是解決問題的最小化方案,在很多情況下,將一段代碼改寫為 Python 單行程序會提升可讀性,并使得代碼更加 Pythonic。例如使用列表解析將創(chuàng)建列表的代碼縮短到只有一行。請看下面的例子:

          # BEFORE squares = []
          for i in range(10): squares.append(i**2)
          print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

          在這個(gè)代碼片段中,我們需要五行代碼來生成頭10個(gè)平方數(shù)的列表,并把它打印到命令行。但如果使用更佳的單行解決方案,就能以一種更易讀和簡明的方式做到同樣的事情:

          # AFTERprint([i**2 for i in range(10)])# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

          輸出是完全一樣的,但單行程序是基于更加 Pythonic 的概念列表解析來構(gòu)建的,可讀性更高,也更簡潔。

          然而,Python一行流也可能寫得難以理解。在有些情況下,編寫單行程序的解決方案,并不會讓程序更加可讀。但是,正如象棋大師會在動棋之前了解所有可能的行動方案,并決定何為最佳,你也需要了解所有可以表達(dá)你的想法的編碼方式,如此才能從中選擇最好的方式。追求最優(yōu)美的解決方案不是一件低優(yōu)先級的事情,而是 Python 生態(tài)系統(tǒng)的核心。正如《Python 之禪》所教導(dǎo)的:“優(yōu)美勝于丑陋。”

          編碼能力卡住了?這本書獲取可以幫助到你。


          你是一位初級到中級的 Python 編碼者嗎?跟很多處于同樣位置的人一樣,你也許在編碼能力進(jìn)展上有點(diǎn)卡住了。你已經(jīng)讀了很多在線編程教程,也編寫過自己的源代碼,并成功地交付了一些小項(xiàng)目。你已經(jīng)完成了一門基礎(chǔ)編程課程,并且學(xué)過一兩本編程教材。也許你還在大學(xué)里修過一門程序技術(shù)課程,在那里已學(xué)到了計(jì)算機(jī)科學(xué)與編程的基礎(chǔ)知識。

          你也許會受某些信念所限,比如大多數(shù)程序員理解源碼的速度比你理解的快得多,或者你與前10%?的程序員差距太大。如果你希望達(dá)到高級編碼水平,加入頂尖編碼專家的行列,那么需要學(xué)習(xí)新的適應(yīng)性技能。

          小編很有同感,因?yàn)槭昵皠傞_始學(xué)習(xí)計(jì)算機(jī)科學(xué)的時(shí)候,也覺得自己在編程上一無所知,并為此苦惱。而與此同時(shí),我所有的同僚看起來都精通編程,且頗具經(jīng)驗(yàn)。

          借助本書,希望幫助你們克服這些限制自我的想法,讓你們朝著成為 Python 專家的方向更進(jìn)一步。

          ▊《Python一行流:像專家一樣寫代碼

          關(guān)于作者

          克里斯蒂安·邁耶(Christian Mayer)是一位計(jì)算機(jī)科學(xué)博士,也是知名 Python 網(wǎng)站finxter(網(wǎng)址見鏈接列表“文前3”條目)創(chuàng)始人和維護(hù)者。該網(wǎng)站非?;钴S,內(nèi)容訂閱人數(shù)已經(jīng)超過2萬且仍在持續(xù)增長。他的網(wǎng)站不僅發(fā)展迅速,也幫助數(shù)以萬計(jì)的學(xué)習(xí)者提升了編碼技能和優(yōu)化在線業(yè)務(wù)??死锼沟侔餐瑫r(shí)也是《Python咖啡時(shí)間》(Coffee Break Python)系列自出版圖書的作者。

          關(guān)于譯者

          蘇丹,網(wǎng)上id一般為su27,2009年畢業(yè)于北京師范大學(xué)數(shù)學(xué)系,主要從事后端編程工作,也曾從事前端與客戶端開發(fā)工作。在Python的“黃埔軍?!倍拱陥F(tuán)隊(duì)中成長,目前為豆瓣用戶產(chǎn)品后端負(fù)責(zé)人,日常跟Python打交道較多。

          《Python一行流》會教你閱讀和編寫一行流程序,系統(tǒng)性拆分和理解任意一行Python代碼,像專家一樣得心應(yīng)手地編寫強(qiáng)壯、緊湊的Python程序。本書有5個(gè)章節(jié),覆蓋了編程技巧、正則表達(dá)式、機(jī)器學(xué)習(xí)、數(shù)據(jù)科學(xué)的核心課題,以及許多有用的算法。通過對單行程序范例的詳細(xì)介紹,本書解釋了計(jì)算機(jī)科學(xué)的關(guān)鍵概念,并可用來提升編碼與分析的重要技能。你會學(xué)到Python的進(jìn)階功能,例如列表解析、切片、lambda函數(shù)、正則表達(dá)式、map和reduce函數(shù),以及切片賦值等。



          福利時(shí)間:


          留言說說你最喜歡Python語言中哪個(gè)特性,將精選出3條最佳評論各獲得本圖書一本。

          瀏覽 43
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  麻豆五月婷婷 | 交+视频+在线+观看 | 壁特壁视频免费观看 | 肏屄视频在线看 | 亚洲国产黄色视频 |