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

          聊一些鮮為人知但有趣的Python特性,附案例

          共 1429字,需瀏覽 3分鐘

           ·

          2022-03-08 08:28

          奇妙的Python特性

          之前有個(gè)小學(xué)弟畢業(yè)論文用到Python做NLP,學(xué)了半個(gè)月跟我說(shuō)Python真的太良心了,語(yǔ)法相對(duì)Java簡(jiǎn)潔很多。

          我笑了笑說(shuō)那是你用的太少,沒(méi)遭遇到讓人直呼f*ck的特性。

          確實(shí),對(duì)于初學(xué)者來(lái)說(shuō)Python的靜態(tài)類型、強(qiáng)制縮進(jìn)、解釋性、強(qiáng)類型等特質(zhì),讓它變得像英語(yǔ)短句那樣容易理解,也不需要你有很強(qiáng)的抽象思維能力。

          但其實(shí)越往深里學(xué),你會(huì)發(fā)現(xiàn)Python中有很多精心設(shè)計(jì)的小細(xì)節(jié),會(huì)讓新手覺(jué)得費(fèi)解,甚至不解。

          比如說(shuō),我們來(lái)檢查下兩個(gè)新的對(duì)象是否引用自同一對(duì)象:

          x?=?256
          y?=?256
          print(?x?is?y?)

          這將會(huì)返回True,確實(shí)引用自同一對(duì)象。

          但如果你執(zhí)行下面代碼,會(huì)得到不一樣的結(jié)果。

          x?=?257
          y?=?257
          print(?x?is?y?)

          它返回的是False

          為什么幾乎同樣的代碼,結(jié)果卻大相徑庭。

          這主要是因?yàn)?5 到 256 內(nèi)的整數(shù)經(jīng)常會(huì)用到,這些對(duì)象在你啟動(dòng)Python的時(shí)候就已經(jīng)分配好了。

          所以256是一個(gè)已經(jīng)存在的對(duì)象,而257并不是,相當(dāng)于在內(nèi)存中新建了兩個(gè)對(duì)象:x和y。

          當(dāng)然上面只是Python奇妙特性中的一個(gè)簡(jiǎn)單案例,還有很多小技巧等待我們?nèi)ヌ剿鳎矣X(jué)得這也是一個(gè)有趣的過(guò)程。

          更多的語(yǔ)言特性

          之前在Github上看到過(guò)一個(gè)類似的項(xiàng)目,叫作wtfpython(What the f\*ck Python! ),作者就收集了眾多讓你知乎f*uk的Python知識(shí)點(diǎn)。

          其中,有關(guān)于原始字符串r的作用,為什么在以 r 開(kāi)頭的原始字符串中, 反斜杠并沒(méi)有特殊含義了。

          還有在迭代中刪除元素,del和remove的區(qū)別:

          list_1?=?[1,?2,?3,?4]
          list_2?=?[1,?2,?3,?4]

          for?idx,?item?in?enumerate(list_1):
          ????del?item

          for?idx,?item?in?enumerate(list_2):
          ????list_2.remove(item)
          ????
          print(list_1)
          print(list_2)

          猜猜list_1和list_2輸出的結(jié)果是相同還是不同?

          執(zhí)行上面代碼后,list_1的結(jié)果是[1, 2, 3, 4],list_2的結(jié)果是[2, 4]。

          是不是有點(diǎn)意外哈哈,作者給出詳細(xì)的解答,如下。

          諸如此類的案例還有很多,包括了數(shù)據(jù)類型、邏輯語(yǔ)句、函數(shù)、類等語(yǔ)法技巧,大家可以去作者的項(xiàng)目查看。

          https://github.com/leisurelicht/wtfpython-cn

          我這邊也把相應(yīng)的內(nèi)容梳理成PDF,大家關(guān)注公眾號(hào)在后臺(tái)回復(fù)【8】,即可獲得完整版本。

          就像作者在readme前言中說(shuō)的,該項(xiàng)目意在收集 Python 中那些難以理解和反人類直覺(jué)的例子,以及鮮為人知的功能特性, 并嘗試討論這些現(xiàn)象背后真正的原理!

          探索這些案例的過(guò)程也是對(duì)Python內(nèi)部原理的深入了解,如果你能覺(jué)得有趣,那將收獲頗豐。


          加入知識(shí)星球【我們談?wù)摂?shù)據(jù)科學(xué)】

          500+小伙伴一起學(xué)習(xí)!








          ·?推薦閱讀?·

          盤(pán)點(diǎn)2021最佳數(shù)據(jù)可視化作品

          「Python實(shí)用秘技04」pdf文件批量添加文字水印

          新一代Python包管理工具來(lái)了


          瀏覽 37
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  久久小视频 | 亚洲一级无码 | 婷婷伊人綜合中文字幕小说 | 亚洲视频免费 | 国产精品久久久久久无码牛牛章艳 |