0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一支疫苗有2萬億段重復(fù)的代碼

Linux愛好者 ? 來源:新智元 ? 作者:新智元 ? 2021-01-20 09:38 ? 次閱讀

【新智元導(dǎo)讀】從輝瑞疫苗被批準(zhǔn)以后,它就被置于世界的聚光燈下。近日,一位程序員從計(jì)算機(jī)科學(xué)的角度,對(duì)輝瑞疫苗的設(shè)計(jì)進(jìn)行了「逆向工程」,文章引起不小的反響,從信頭 (Header)、元數(shù)據(jù)(Metadata),到幫助偽裝躲過人體免疫系統(tǒng)防火墻的Ψ 分子,一支疫苗有2萬億段重復(fù)的代碼,我們看到了計(jì)算機(jī)與生物學(xué)那頗為神秘的聯(lián)系。

輝瑞疫苗,逆向工程?

聽起來有些不可思議,但一位程序員從計(jì)算機(jī)科學(xué)的角度深度剖析了Biotech/輝瑞的mRNA新冠疫苗BNT162b設(shè)計(jì),并撰寫了這篇文章——Biotech/輝瑞SARS-CoV-2疫苗的源代碼的反向工程(Reverse Engineering the sourcecode of the BioNTech/Pfizer SARS-CoV-2 Vaccine).(以下簡(jiǎn)稱輝瑞疫苗)

讀過后,你或許會(huì)開始會(huì)讓你對(duì)生命和計(jì)算機(jī)世界產(chǎn)生奇妙的聯(lián)系。

簡(jiǎn)單的生物學(xué)背景

讓我們先來回顧一下生物學(xué)知識(shí),這里,我們將透過程序員的眼睛看待生命編碼。

DNA和程序的種種相似的地方,但與計(jì)算機(jī)使用0和1不同,生命使用A、C、G和U/T來編碼。

在自然界中,A、C、G和U/T都是分子,以鏈的形式儲(chǔ)存在DNA(或RNA)中。

在計(jì)算機(jī)中,我們把8位編入一個(gè)字節(jié),字節(jié)是處理數(shù)據(jù)的典型單位。

自然界將3個(gè)核苷酸組合成一個(gè)密碼子,而這個(gè)密碼子是典型的處理單元。

密碼子包含6位信息(每個(gè)DNA字符2位,3字符= 6位,這意味著2? = 64種不同密碼子值)。

其次,疫苗是一種液體,我們?cè)撊绾握務(wù)撛创a?

源代碼!

讓我們從疫苗的一小部分源代碼開始,下圖為世界衛(wèi)生組織公布的BNT162b前500個(gè)字符。

ba1310f4-4ee2-11eb-8b86-12bb97331649.png

mRNA新冠疫苗BNT162b的核心就是這個(gè)數(shù)字代碼。它有4284個(gè)字符長(zhǎng),在疫苗生產(chǎn)過程的最開始,將這段代碼上傳到DNA打印機(jī),然后打印機(jī)將磁盤上的字節(jié)轉(zhuǎn)換成實(shí)際的DNA分子。

DNA打印機(jī),型號(hào)BioXp 3200

從這樣的機(jī)器中產(chǎn)生了少量的DNA,在經(jīng)過大量的生物和化學(xué)處理后,最終成為疫苗瓶中的RNA。

RNA就像計(jì)算機(jī)的RAM一樣,但是,RNA非常脆弱,所以,輝瑞的mRNA疫苗必須儲(chǔ)存在最深處的深冷庫里。

每個(gè)RNA字符的重量為0.53·10?21克,一針疫苗里有2萬億段重復(fù)的代碼,相當(dāng)于25 Pb的數(shù)據(jù)量。

讓我們來看世衛(wèi)組織文件披露的一頁:

首先,cap是什么?就像你不能在計(jì)算機(jī)上的一個(gè)文件中輸入操作碼然后運(yùn)行它一樣,生物操作系統(tǒng)需要頭文件、鏈接器和調(diào)用約定之類的東西。

疫苗的編碼由以下兩個(gè)核苷酸開始:

這可以與以MZ開頭的DOS和Windows可執(zhí)行文件,或以#!開頭的UNIX腳本進(jìn)行比較。在生活系統(tǒng)和操作系統(tǒng)中,這兩個(gè)字符都不會(huì)以任何方式執(zhí)行。但他們必須在那里,否則什么都不會(huì)發(fā)生。

mRNA 「帽」有許多功能,它讓代碼看起來合法,從而保護(hù)它不被我們身體里的免疫系統(tǒng)破壞。

未翻譯區(qū)5 'UTR

生命由蛋白質(zhì)組成。當(dāng)RNA轉(zhuǎn)化為蛋白質(zhì)時(shí),這被稱為翻譯。

RNA分子只能從一個(gè)方向讀取。令人困惑的是,閱讀開始的部分被稱為5'UTR。讀數(shù)在3'UTR停止。

UTR(Untranslated Regions)即非翻譯區(qū),是mRNA分子兩端的非編碼片段:

在這里,我們遇到了第一個(gè)驚喜。正常的RNA特征是A、C、G和U。U在DNA中也被稱為「T」。但在這里我們發(fā)現(xiàn)了一個(gè)ψ。

怎么回事?

這是關(guān)于疫苗的一個(gè)特別聰明的地方。我們的身體運(yùn)行著一個(gè)強(qiáng)大的反病毒系統(tǒng),由于這個(gè)原因,細(xì)胞對(duì)外來RNA非常冷淡,并且在它做出任何反應(yīng)之前就要破壞它。

這對(duì)我們的疫苗來說是個(gè)問題——它需要偷偷通過我們的免疫系統(tǒng)。經(jīng)過多年的實(shí)驗(yàn),人們發(fā)現(xiàn),如果RNA中的U被一種稍作修飾的分子所取代,我們的免疫系統(tǒng)就會(huì)失去興趣。

所以在輝瑞疫苗中,每個(gè)U都被1-甲基-3 ' -偽尿酰(ψ)所取代,它能幫助我們的疫苗逃過免疫系統(tǒng)這一關(guān)。

在計(jì)算機(jī)安全領(lǐng)域,我們也知道這個(gè)訣竅:有時(shí)可能傳輸某樣?xùn)|西,雖然這會(huì)引起防火墻和安全解決方案的懷疑,但這仍然被后端服務(wù)器接受,然后可能被黑客攻擊。

很多人問,病毒能否也用ψ技術(shù)來打敗我們的免疫系統(tǒng)?

這是不太可能的。因?yàn)樯緵]有制造1-甲基-3 ' -偽尿酰核苷酸的機(jī)制,而病毒需要依靠生命的機(jī)制來繁殖自己。而mRNA疫苗在人體內(nèi)迅速降解,而ψ修飾后的RNA不可能在那里復(fù)制。

回到5 ' UTR。這51個(gè)字符是做什么的?如同自然界的一切事物一樣,幾乎沒有任何事物有一個(gè)明確的功能。

當(dāng)我們的細(xì)胞需要將RNA翻譯成蛋白質(zhì)時(shí),這需要使用一種叫做核糖體的機(jī)器。核糖體就像蛋白質(zhì)的3D打印機(jī)。它攝取一串RNA,在此基礎(chǔ)上釋放出一串氨基酸,然后折疊成蛋白質(zhì)。

這就是我們?cè)谏厦婵吹降那闆r。底部的黑色絲帶是RNA。出現(xiàn)在綠色部分的緞帶是正在形成的蛋白質(zhì)。進(jìn)出的東西是氨基酸和使它們適合RNA的適配器。

這個(gè)核糖體需要坐在RNA鏈上才能發(fā)揮作用。一旦就位,它就可以開始根據(jù)它攝入的RNA進(jìn)一步形成蛋白質(zhì)。從這一點(diǎn)上,你可以想象它還不能讀出它首先降落的地方。

這只是UTR的功能之一:核糖體著陸區(qū)。UTR提供「導(dǎo)入」。

S糖蛋白信號(hào)

如前所述,疫苗的目標(biāo)是讓細(xì)胞產(chǎn)生大量刺突蛋白。到目前為止,我們?cè)谝呙缭创a中遇到的大多是元數(shù)據(jù)和調(diào)用約定?,F(xiàn)在我們進(jìn)入病毒蛋白質(zhì)的領(lǐng)域。

然而,我們還有一層元數(shù)據(jù)需要處理。一旦核糖體制造出一個(gè)蛋白質(zhì),這個(gè)蛋白質(zhì)仍然需要去某個(gè)地方。這是編碼在「S糖蛋白信號(hào)肽(擴(kuò)展先導(dǎo)序列)」。

了解這一點(diǎn)的方法是,在蛋白質(zhì)的開頭有一種地址標(biāo)簽,作為蛋白質(zhì)本身編碼的一部分。在這個(gè)特定的例子中,信號(hào)肽表明這種蛋白質(zhì)應(yīng)該通過「內(nèi)質(zhì)網(wǎng)」離開細(xì)胞。

「信號(hào)肽」不是很長(zhǎng),但是當(dāng)我們看代碼時(shí),病毒和疫苗的RNA是有區(qū)別的:

bc2284c4-4ee2-11eb-8b86-12bb97331649.png

怎么回事呢?我們知道,在生物學(xué)中,三個(gè)RNA字符組成一個(gè)密碼子。每個(gè)密碼子都對(duì)特定的氨基酸進(jìn)行編碼。而疫苗中的信號(hào)肽與病毒本身的氨基酸完全相同。

那么RNA是怎么不同的呢?

有43=64個(gè)不同的密碼子,因?yàn)橛?個(gè)RNA字符,一個(gè)密碼子中有3個(gè)。然而只有20種不同的氨基酸。這意味著多個(gè)密碼子對(duì)同一種氨基酸進(jìn)行編碼。

下表映射了RNA密碼子和氨基酸之間的編碼關(guān)系:

bc6232e0-4ee2-11eb-8b86-12bb97331649.png

RNA密碼子表(維基百科)

在這個(gè)表中,我們可以看到疫苗(UUU -> UUC)的修改都是同義的。疫苗的RNA編碼不同,但會(huì)產(chǎn)生相同的氨基酸和蛋白質(zhì)。

如果我們仔細(xì)觀察,我們會(huì)發(fā)現(xiàn)大部分的變化發(fā)生在密碼子的第三個(gè)位置,上面有一個(gè)' 3 '。如果我們檢查通用密碼子表,我們會(huì)發(fā)現(xiàn)第三個(gè)位置通常與產(chǎn)生的氨基酸無關(guān)。

所以,這些變化是同義的,但為什么會(huì)有這些變化呢?仔細(xì)觀察,我們發(fā)現(xiàn)除了一個(gè)變化之外,所有的變化都會(huì)導(dǎo)致更多的C和G。

你為什么要這么做?如上所述,我們的免疫系統(tǒng)會(huì)對(duì)「外源性」RNA進(jìn)行攻擊,為了逃避檢測(cè),RNA中的「U」已經(jīng)被ψ所取代了。

然而,事實(shí)證明,含有更多G和C的RNA也能更有效地轉(zhuǎn)化為蛋白質(zhì),這已經(jīng)在疫苗RNA中實(shí)現(xiàn)了只要有可能就用G和C替換許多字符。

真正的刺突蛋白

疫苗RNA的下3777個(gè)字符類似于「密碼子優(yōu)化」,可以添加大量的C和G。

bcce6802-4ee2-11eb-8b86-12bb97331649.png

這里我們看到同義的RNA變化。例如,在第一個(gè)密碼子中CUU變成了CUG。這給疫苗增加了另一個(gè)「G」,我們知道這有助于提高蛋白質(zhì)的生產(chǎn)。

當(dāng)我們比較疫苗中的整個(gè)刺突蛋白時(shí),所有的變化都是同義的。除了兩個(gè),這就是我們?cè)谶@里看到的。

上面的第三和第四個(gè)密碼子代表了實(shí)際的變化。那里的K和V氨基酸都被P或脯氨酸所取代。對(duì)于「K」,這需要改變?nèi)?「!!」),而對(duì)于「V」,這只需要改變兩次(「!!」)。

事實(shí)證明,這兩個(gè)變化極大地提高了疫苗的效率。

那么這里發(fā)生了什么?如果你看一個(gè)真正的冠狀病毒粒子,你可以看到刺突蛋白:

這些刺釘被安裝在病毒體內(nèi)(「核衣殼蛋白」)。但問題是,我們的疫苗只會(huì)產(chǎn)生刺突,我們不會(huì)把它們植入任何一種病毒體內(nèi)。

結(jié)果是,未經(jīng)修飾的,獨(dú)立的刺突蛋白崩潰成不同的結(jié)構(gòu)。如果作為疫苗注射,這確實(shí)會(huì)使我們的身體產(chǎn)生免疫力。但只針對(duì)崩潰的刺突蛋白。

真正的冠狀病毒是帶著尖刺的。在這種情況下,疫苗不會(huì)很有效。

那么該怎么辦呢?

2017年,有人描述了如何在正確的位置放置一個(gè)雙脯氨酸替代,將使SARS-CoV-1和MERS S蛋白形成「預(yù)融合」結(jié)構(gòu),即使不是整個(gè)病毒的一部分。這是因?yàn)楦彼崾且环N非常堅(jiān)硬的氨基酸。它就像一種夾板,在我們需要向免疫系統(tǒng)展示的狀態(tài)下穩(wěn)定蛋白質(zhì)。

蛋白質(zhì)的末端,下一步

如果我們?yōu)g覽其余的源代碼,我們會(huì)在刺突蛋白的末端遇到一些小的修改:

bd4d5770-4ee2-11eb-8b86-12bb97331649.png

在蛋白質(zhì)的末端,我們會(huì)發(fā)現(xiàn)一個(gè)「停止」密碼子,在這里用小寫的「s」表示。這是一種禮貌的說法,表示蛋白質(zhì)應(yīng)該到此為止。最初的病毒使用UAA終止密碼子,疫苗使用兩個(gè)UGA終止密碼子,也許只是為了更好的措施。

3 'UTR

就像核糖體在5 '端需要引入,我們發(fā)現(xiàn)了' 5UTR,在蛋白質(zhì)的末端我們發(fā)現(xiàn)了一個(gè)類似的結(jié)構(gòu),稱為3 ' UTR。

關(guān)于3 ' UTR有很多說法,但這里引用維基百科的說法:「3 ' UTR在基因表達(dá)中起著至關(guān)重要的作用,它影響mRNA的定位、穩(wěn)定性、輸出和翻譯效率。盡管我們目前對(duì)3 ' -UTRs有了解,但它們?nèi)匀皇窍鄬?duì)神秘的。」

我們所知道的是,某些3 ' UTR在促進(jìn)蛋白質(zhì)表達(dá)方面非常成功。根據(jù)世衛(wèi)組織的文件,輝瑞疫苗3 ' UTR是從「split (AES) mRNA的氨基末端增強(qiáng)子和編碼12S核糖體RNA的線粒體中提取的,以保證RNA的穩(wěn)定性和高總蛋白表達(dá)」。

The AAAAAAAAAAAAAAAAAAAAAA end of it all

mRNA的最末端是聚腺苷化的。這是一種以「AAAAAAAAAAAAAAAAAAAAAA」的奇特結(jié)尾。

似乎,就連mRNA似乎也受夠了這個(gè)糟糕的2020年!

mRNA可以重復(fù)使用很多次,但在這個(gè)過程中,它也會(huì)在末端失去一些A。一旦A耗盡,mRNA就不再起作用而被丟棄。這樣,「多聚腺苷酸尾(Poly-A Tail)」就可以防止其退化。

有研究表明,對(duì)于mRNA疫苗來說,A的最佳數(shù)量是多少。我在公開文獻(xiàn)中讀到,這個(gè)數(shù)字在120左右達(dá)到了頂峰。

BNT162b2疫苗的是:

eed39872-4ee2-11eb-8b86-12bb97331649.png

這是30個(gè)A,然后是「10個(gè)核苷酸連接體」(GCAUAUGACU),再后面是70個(gè)A。

太長(zhǎng)不看版

如果上面的一切讓你感到云里霧里,作者在這里為您準(zhǔn)備了一份「太長(zhǎng)不看版」:

帽子來確保RNA看起來像普通的mRNA

已知的成功和優(yōu)化的5 ' UTR

密碼子優(yōu)化信號(hào)肽,將刺突蛋白送到正確的位置(100%從原始病毒復(fù)制)

原始刺的密碼子優(yōu)化版本,有兩個(gè)「脯氨酸」替代,以確保蛋白質(zhì)以正確的形式出現(xiàn)

一個(gè)已知的成功和優(yōu)化的3 ' UTR

一個(gè)有點(diǎn)神秘的多聚腺苷酸尾(Poly-ATail),里面有一個(gè)無法解釋的「連接器

密碼子優(yōu)化在mRNA上增加了大量的G和C。與此同時(shí),用ψ(1-甲基-3 ' -偽尿酰ψ)而不是U來幫助逃避我們的免疫系統(tǒng),因此mRNA會(huì)停留足夠長(zhǎng)的時(shí)間,所以我們實(shí)際上可以幫助訓(xùn)練免疫系統(tǒng)。

文章在reddit上引起了廣泛討論,學(xué)科間的邊界似乎也越來越模糊。

一位網(wǎng)友看完后直言:我通過稍微修飾U核苷酸,可以使RNA越過我們的「安全系統(tǒng)」。我們的安全系真的糟透了!

你呢?你怎么看?

責(zé)任編輯:lq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7305

    瀏覽量

    87566
  • 編碼
    +關(guān)注

    關(guān)注

    6

    文章

    921

    瀏覽量

    54716
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4701

    瀏覽量

    68126

原文標(biāo)題:一針重復(fù)2萬億段代碼,我「逆向工程」了輝瑞疫苗!

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    請(qǐng)問TAS5727持幾段EQ?

    TAS5727持幾段EQ? 比如PCM5121持7以上,TAS5727可以么?
    發(fā)表于 10-14 07:02

    THS4121的單端輸入的電壓范圍是多少?

    我對(duì)單端輸入差分輸出芯片THS4121些疑問麻煩解惑: 1、THS4121的單端輸入的電壓范圍是多少? 2、單端輸入 的電壓可否是雙極性的正弦波?我要采集的信號(hào)是正負(fù)的正弦波
    發(fā)表于 08-26 06:48

    英偉達(dá)股價(jià)反彈重新跨越3萬億美元大關(guān)

    8月19日,國(guó)際財(cái)經(jīng)界傳來新動(dòng)態(tài),外媒指出,盡管英偉達(dá)股價(jià)在7月中旬后經(jīng)歷了一段顯著的下滑,但該公司上周成功實(shí)現(xiàn)市值反彈,重新跨越了3萬億美元大關(guān),這壯舉緊隨微軟之后,后者已在早些時(shí)候重登3
    的頭像 發(fā)表于 08-19 17:03 ?367次閱讀

    請(qǐng)問esp32c2持ADC連續(xù)轉(zhuǎn)換模式的功能嗎?

    請(qǐng)問esp32c2持ADC連續(xù)轉(zhuǎn)換模式的功能嗎,我看官網(wǎng)的API沒有這部分的代碼,下了連續(xù)轉(zhuǎn)換的例子,選c2芯片編譯時(shí)也報(bào)相關(guān)API沒對(duì)應(yīng)
    發(fā)表于 06-06 08:15

    不懂真得問!FREERTOS在中斷里面,可以調(diào)用任務(wù)級(jí)臨界代碼的函數(shù)嗎?

    ] = 1; exti_interrupt_flag_clear(INT_EXTI_LINE); } 其中,Receive(); 是一段臨界區(qū)代碼的函數(shù),是關(guān)于SPI通信的。 然后我運(yùn)行程序,
    發(fā)表于 06-03 12:08

    想通過perf工具來檢查2不同代碼的內(nèi)存占用率,但直沒找到,怎么辦?

    想通過perf工具來檢查2不同代碼的內(nèi)存占用率,但直沒找到,怎么辦?
    發(fā)表于 05-17 13:33

    請(qǐng)問STM8中的RAM會(huì)像51系列一段初始化清零代碼嗎?

    最近在做防止復(fù)位腳復(fù)位的程序,想利用RAM的保存數(shù)據(jù)特性做一段復(fù)位恢復(fù),STM8 中的RAM會(huì)像51系列一段初始化清零代碼嗎?
    發(fā)表于 04-16 06:49

    谷歌母公司Alphabet市值突破2萬億美元,即將公布財(cái)報(bào)

    目前為止,全球僅有三家企業(yè)市值突破2萬億美元大關(guān):蘋果、微軟和自今年起加入的英偉達(dá),其市值分別為2.73萬億美元、3.15萬億美元和2.23萬億
    的頭像 發(fā)表于 04-13 10:44 ?667次閱讀

    中性線為什么要重復(fù)接地?什么作用?

    中性線為什么要重復(fù)接地?什么作用? 中性線重復(fù)接地是為了提高電氣系統(tǒng)的安全性和穩(wěn)定性。 首先,重復(fù)接地可以提供多重故障路徑,當(dāng)個(gè)接地故障
    的頭像 發(fā)表于 12-12 14:15 ?729次閱讀

    settimeout和setinterval哪些區(qū)別?

    settimeout和setinterval哪些區(qū)別? setTimeout和setInterval都是JavaScript中的定時(shí)器函數(shù),用于在指定的時(shí)間間隔后執(zhí)行一段代碼。盡管它們?cè)谀承┓矫?/div>
    的頭像 發(fā)表于 12-09 14:32 ?1638次閱讀

    數(shù)據(jù)結(jié)構(gòu):刪除有序鏈表的重復(fù)節(jié)點(diǎn)

    給定個(gè)有序單鏈表(從小到大有序)的頭結(jié)點(diǎn)head(該結(jié)點(diǎn)值),刪除鏈表中的重復(fù)元素,使鏈表中的所有元素都只出現(xiàn)次。如當(dāng)輸入 {1,1,2
    的頭像 發(fā)表于 12-05 15:46 ?730次閱讀
    數(shù)據(jù)結(jié)構(gòu):刪除有序鏈表的<b class='flag-5'>重復(fù)</b>節(jié)點(diǎn)

    python如何直循環(huán)個(gè)代碼

    在Python中,幾種方法可以實(shí)現(xiàn)代碼的循環(huán)執(zhí)行。下面我將詳盡、詳實(shí)、細(xì)致地介紹這些方法和它們的使用情況。 使用while循環(huán): 在Python中,可以使用while循環(huán)來重復(fù)執(zhí)行一段
    的頭像 發(fā)表于 11-23 15:54 ?2261次閱讀

    devc怎么注釋掉一段代碼

    在DevC中,要注釋掉一段代碼,你可以使用注釋符號(hào)來標(biāo)記這段代碼。注釋符號(hào)的作用是告訴編譯器不要編譯這些代碼,而是將其視為注釋,這樣可以方便開發(fā)人員在
    的頭像 發(fā)表于 11-22 10:23 ?2182次閱讀

    python處理重復(fù)值的方法

    種數(shù)據(jù)結(jié)構(gòu)。通過將重復(fù)值添加到集合中,可以很容易地將重復(fù)值去除。以下是使用集合處理重復(fù)值的示例代碼: # 創(chuàng)建個(gè)包含
    的頭像 發(fā)表于 11-21 15:47 ?1187次閱讀

    PySnooper:替代print的重復(fù)性工作

    麻煩。 現(xiàn)在,了PySnooper,您并不需要配置那么復(fù)雜的Debug工具,就能夠完成對(duì)整個(gè)代碼的分析。它能告訴您哪些代碼正在運(yùn)行,以及局部變量的值是什么。 其實(shí),PySnooper 就是替代了
    的頭像 發(fā)表于 10-30 10:41 ?369次閱讀