<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>

          你學(xué)習(xí) Python 的時(shí)候,用到舒服姿勢了么?

          共 2290字,需瀏覽 5分鐘

           ·

          2021-05-24 17:41

          你在學(xué)習(xí)和使用 Python 的時(shí)候,可能會(huì)遇到這么些情況:

          剛學(xué) Python 語句的時(shí)候,不知道它的運(yùn)行原理是怎樣的?

          報(bào)錯(cuò)了一頓重啟,能跑就行?

          學(xué)習(xí)知識點(diǎn)的時(shí)候,沒有「做好姿勢」?

          要不我們來模擬一下,在學(xué)習(xí)一個(gè) Python 知識點(diǎn)的過程中,怎么樣才能讓你覺得更好玩,或者說怎么樣的學(xué)習(xí)姿勢才能讓你舒服點(diǎn)?

          請對號入座,走起!

          比如,你在寫函數(shù)、調(diào)用函數(shù)的時(shí)候,是不是在給函數(shù)傳遞參數(shù)的時(shí)總是那么的「理所當(dāng)然」,可有時(shí)候又會(huì)覺得「不可思議」?

          舉一個(gè)簡單的例子:

          像這樣一個(gè)簡單的函數(shù)調(diào)用:

          你覺得此刻輸出的結(jié)果是多少?

          答案是 1 ,你(假設(shè)你剛學(xué) Python 不久)可能會(huì)感到困惑。

          這不是調(diào)用了 add 方法,給他丫的加一了么?結(jié)果不應(yīng)該是 2 嗎?

          你先別急,我們再來看看這個(gè):

          你覺得此刻輸出的結(jié)果又是多少?

          經(jīng)過上次的「經(jīng)驗(yàn)」,我猜你此時(shí)認(rèn)為輸出結(jié)果就是 [1, 2, 3],但不好意思,這次輸出的結(jié)果是 [1, 2, 3, 6]。

          想不到吧?



          我想你在學(xué)習(xí) Python 的過程中,像以上出現(xiàn)類似的困惑還有很多很多...

          那如果現(xiàn)在把代碼執(zhí)行的每個(gè)步驟都清晰地、可視化地給你看清楚,又會(huì)是一種什么樣的效果呢?

          我們不妨來試試第一段代碼:

          從第一行開始運(yùn)行,我們定義了一個(gè)名為 add 的函數(shù),add 函數(shù)定義了一個(gè)參數(shù) x:

          接著執(zhí)行 a=1, 現(xiàn)在內(nèi)存開辟了一個(gè)空間,存放對象 1,變量 a 指向了對象 1:

          下一步就是調(diào)用 add(a) 方法了:

          add 方法中執(zhí)行了 x += 1 操作,此時(shí)方法中 x 指向?qū)ο?2:

          那我們現(xiàn)在 print(a), a 還是指向 1,所以結(jié)果是 1。

          我們再來看第二段代碼:

          代碼看似差不多,只不過這里是把參數(shù)的數(shù)據(jù)類型換成了列表。

          從第一行開始運(yùn)行,我們定義了一個(gè) add 函數(shù),add 函數(shù)定義了一個(gè)參數(shù) x:

          接著執(zhí)行 a = [1, 2, 3],現(xiàn)在內(nèi)存開辟了一個(gè)空間,存放對象 [1,2,3],變量 a 指向了這個(gè) list 對象:

          下一步就是調(diào)用 add(a) 方法了 ( 此時(shí) x 指向了 list?):

          add 方法中執(zhí)行了append 操作,list 變成了 [1,2,3,6]:

          可以看到現(xiàn)在 a 指向的是對象 [1,2,3,6],所以 print(a) 輸出結(jié)果就是 [1,2,3,6]。

          嗯,你看到區(qū)別了。

          為嘛?當(dāng)參數(shù)是 1 的時(shí)候,調(diào)用 add 方法是這樣的:

          而當(dāng)參數(shù)是列表時(shí),調(diào)用 add 方法是這樣的:

          你很想知道為什么會(huì)這樣,于是開始搜索了一波數(shù)據(jù)類型的區(qū)別:

          接著你看到了這玩意:

          你發(fā)現(xiàn) Number 是不可變數(shù)據(jù),List 是可變數(shù)據(jù)。

          通過搜索可變類型和不可變類型的區(qū)別,你慢慢的就明白了:

          因?yàn)?Number 是不可變的,所以你開始執(zhí)行 a = 1 的時(shí)候,開辟出來的內(nèi)存用來存放對象 1 ,由于這里的 1 是不可變的,所以在調(diào)用 add 方法時(shí),就又會(huì)開辟一個(gè)新的空間來創(chuàng)造新的內(nèi)存地址給 x 引用。

          而 List 是可變的,當(dāng)調(diào)用 add 方法時(shí),不需要再開辟新的內(nèi)存空間了,x 可以直接指向 list,此時(shí) x 做了 append 操作,list 變成了 [1,2,3,6],a 指向的也是它。

          發(fā)現(xiàn)了么?整個(gè)過程中,你就好像在玩一樣,沒有什么所謂的「學(xué)習(xí)的痛苦」。

          你自己通過「發(fā)現(xiàn)問題——找到關(guān)鍵點(diǎn)——很想弄明白——搜索——結(jié)合自己的問題找到答案」,就把一個(gè)小知識點(diǎn)掌握了。

          如果下次面試被問到這相關(guān)的問題,你的腦子馬上就會(huì)浮現(xiàn)出來這兩張當(dāng)時(shí)令你困惑的圖片:

          ?????????????????????

          那么你肯定能對著面試官滔滔不絕,整個(gè)思路也相當(dāng)清晰。

          學(xué)習(xí)的「舒服姿勢」

          在我看來,整個(gè)學(xué)習(xí)的過程中,更多的是自己「主動(dòng)」起來,才能體會(huì)到那種高效,舒服。

          也許有些事情別人可以手把手的教你操作,但這是有局限性的,而且自己也會(huì)顯得很是被動(dòng),沒有什么比自己通過閱讀,通過探索,通過實(shí)踐而掌握的技巧更讓人舒服了。

          我之前在公眾號安利過不少好用的「工具」,有人問我說,你是如何發(fā)現(xiàn)那么些好用的工具的?我想說的是,如果你真的想知道它們,你就一定會(huì)發(fā)現(xiàn)它們的,只是時(shí)間的問題,因?yàn)檫@和你的「主動(dòng)」想要高效有關(guān)。

          比如我剛剛給你演示的這個(gè)可視化代碼執(zhí)行流程:


          這玩意在這:

          pythontutor.com

          這也是之前我在查閱資料,翻博客,不經(jīng)意間發(fā)現(xiàn)的。

          另外,使用「圖像具像化」也是我常用的「姿勢」,我有時(shí)候遇到一些難題或者困惑,我會(huì)使用圖像的方式把它們表達(dá)出來,相比于文字,可以很清晰的看到問題的關(guān)鍵點(diǎn),降低了不少難度,并且解決完問題之后,過一陣子再看到類似的問題,還能夠想到當(dāng)初解決的思路,我想這可能是圖像的記憶比較深刻。你下次遇到問題的時(shí)候,不妨試試這招。

          還有關(guān)于搜索能力這個(gè)我就不多說了,之前也分享過不少技巧,你可以去公眾號搜一下。

          OK,以上就是小帥b今天給你帶來的分享,希望你可以主動(dòng)地通過工具的使用,閱讀的習(xí)得,問題的具像,搜索的能力,找到你最「舒服的姿勢」。

          ps:公眾號最近做遷移,沒想到這過程中還給我整了點(diǎn)幺蛾子,所以留言還是得再等等了。哦對了,一直肝原創(chuàng)不容易呀,覺得對你有幫助的話,記得多多支持小帥b,能贊賞的贊賞,不能贊賞的轉(zhuǎn)發(fā)一下,滿滿的動(dòng)力呀,謝謝,愛你喲~那么我們下回見啦,peace!

          瀏覽 46
          點(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>
                  午夜亚洲精品无码不卡在线 | 国内精品久久久久久久久久98 | 成人免费视频在线观看 | 成人 无码 日韩精品 | 国产美女被操网站 |