欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

徹底搞懂Python字符編碼

 更新時(shí)間:2018年01月23日 09:02:10   作者:Python之禪  
本篇文章帶領(lǐng)大家徹底搞懂Python字符編碼的一些知識(shí),及python字符編碼的一些基礎(chǔ)概念,需要的朋友可以參考下

不論你是有著多年經(jīng)驗(yàn)的 Python 老司機(jī)還是剛?cè)腴T(mén) Python 不久,你一定遇到過(guò)UnicodeEncodeError、UnicodeDecodeError 錯(cuò)誤,每當(dāng)遇到錯(cuò)誤我們就拿著 encode、decode 函數(shù)翻來(lái)覆去的轉(zhuǎn)換,有時(shí)試著試著問(wèn)題就解決了,有時(shí)候怎么試都沒(méi)轍,只有借用 Google 大神幫忙,但似乎很少去關(guān)心問(wèn)題的本質(zhì)是什么,下次遇到類(lèi)似的問(wèn)題重蹈覆轍,那么你有沒(méi)有想過(guò)一次性徹底把 Python 字符編碼給搞懂呢?

完全理解字符編碼 與 Python 的淵源前,我們有必要把一些基礎(chǔ)概念弄清楚,雖然有些概念我們每天都在接觸甚至在使用它,但并不一定真正理解它。比如:字節(jié)、字符、字符集、字符碼、字符編碼。

字節(jié)

字節(jié)(Byte)是計(jì)算機(jī)中數(shù)據(jù)存儲(chǔ)的基本單元,一字節(jié)等于一個(gè)8位的比特,計(jì)算機(jī)中的所有數(shù)據(jù),不論是保存在磁盤(pán)文件上的還是網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)(文字、圖片、視頻、音頻文件)都是由字節(jié)組成的。

字符

你正在閱讀的這篇文章就是由很多個(gè)字符(Character)構(gòu)成的,字符一個(gè)信息單位,它是各種文字和符號(hào)的統(tǒng)稱(chēng),比如一個(gè)英文字母是一個(gè)字符,一個(gè)漢字是一個(gè)字符,一個(gè)標(biāo)點(diǎn)符號(hào)也是一個(gè)字符。

字符集

字符集(Character Set)就是某個(gè)范圍內(nèi)字符的集合,不同的字符集規(guī)定了字符的個(gè)數(shù),比如 ASCII 字符集總共有128個(gè)字符,包含了英文字母、阿拉伯?dāng)?shù)字、標(biāo)點(diǎn)符號(hào)和控制符。而 GB2312 字符集定義了7445個(gè)字符,包含了絕大部分漢字字符。

字符碼

字符碼(Code Point)指的是字符集中每個(gè)字符的數(shù)字編號(hào),例如 ASCII 字符集用 0-127 連續(xù)的128個(gè)數(shù)字分別表示128個(gè)字符,例如 "A" 的字符碼編號(hào)就是65。

字符編碼

字符編碼(Character Encoding)是將字符集中的字符碼映射為字節(jié)流的一種具體實(shí)現(xiàn)方案,常見(jiàn)的字符編碼有 ASCII 編碼、UTF-8 編碼、GBK 編碼等。某種意義上來(lái)說(shuō),字符集與字符編碼有種對(duì)應(yīng)關(guān)系,例如 ASCII 字符集對(duì)應(yīng) 有 ASCII 編碼。ASCII 字符編碼規(guī)定使用單字節(jié)中低位的7個(gè)比特去編碼所有的字符。例如"A" 的編號(hào)是65,用單字節(jié)表示就是0×41,因此寫(xiě)入存儲(chǔ)設(shè)備的時(shí)候就是b'01000001'。

編碼、解碼

編碼的過(guò)程是將字符轉(zhuǎn)換成字節(jié)流,解碼的過(guò)程是將字節(jié)流解析為字符。

理解了這些基本的術(shù)語(yǔ)概念后,我們就可以開(kāi)始討論計(jì)算機(jī)的字符編碼的演進(jìn)過(guò)程了。

從 ASCII 碼說(shuō)起

說(shuō)到字符編碼,要從計(jì)算機(jī)的誕生開(kāi)始講起,計(jì)算機(jī)發(fā)明于美國(guó),在英語(yǔ)世界里,常用字符非常有限,26個(gè)字母(大小寫(xiě))、10個(gè)數(shù)字、標(biāo)點(diǎn)符號(hào)、控制符,這些字符在計(jì)算機(jī)中用一個(gè)字節(jié)的存儲(chǔ)空間來(lái)表示綽綽有余,因?yàn)橐粋€(gè)字節(jié)相當(dāng)于8個(gè)比特位,8個(gè)比特位可以表示256個(gè)符號(hào)。于是美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)ANSI制定了一套字符編碼的標(biāo)準(zhǔn)叫 ASCII(American Standard Code for Information Interchange),每個(gè)字符都對(duì)應(yīng)唯一的一個(gè)數(shù)字,比如字符 "A" 對(duì)應(yīng)數(shù)字是65,"B" 對(duì)應(yīng) 66,以此類(lèi)推。最早 ASCII 只定義了128個(gè)字符編碼,包括96個(gè)文字和32個(gè)控制符號(hào),一共128個(gè)字符只需要一個(gè)字節(jié)的7位就能表示所有的字符,因此 ASCII 只使用了一個(gè)字節(jié)的后7位,剩下最高位1比特被用作一些通訊系統(tǒng)的奇偶校驗(yàn)。下圖就是 ASCII 碼字符編碼的十進(jìn)制、二進(jìn)制和字符的對(duì)應(yīng)關(guān)系表

 

擴(kuò)展的 ASCII:EASCII(ISO/8859-1)

然而計(jì)算機(jī)慢慢地普及到其他西歐地區(qū)時(shí),發(fā)現(xiàn)還有很多西歐字符是 ASCII 字符集中沒(méi)有的,顯然 ASCII 已經(jīng)沒(méi)法滿足人們的需求了,好在 ASCII 字符只用了字節(jié)的7位 0×00~0x7F 共128個(gè)字符,于是他們?cè)?ASCII 的基礎(chǔ)上把原來(lái)的7位擴(kuò)充到8位,把0×80-0xFF這后面的128個(gè)數(shù)字利用起來(lái),叫 EASCII ,它完全兼容ASCII,擴(kuò)展出來(lái)的符號(hào)包括表格符號(hào)、計(jì)算符號(hào)、希臘字母和特殊的拉丁符號(hào)。然而 EASCII 時(shí)代是一個(gè)混亂的時(shí)代,各個(gè)廠家都有自己的想法,大家沒(méi)有統(tǒng)一標(biāo)準(zhǔn),他們各自把最高位按照自己的標(biāo)準(zhǔn)實(shí)現(xiàn)了自己的一套字符編碼標(biāo)準(zhǔn),比較著名的就有 CP437 , CP437 是 始祖IBM PC、MS-DOS使用的字符編碼,如下圖:

 

眾多的 ASCII 擴(kuò)充字符集之間互不兼容,這樣導(dǎo)致人們無(wú)法正常交流,例如200在CP437字符集表示的字符是 È ,在 ISO/8859-1 字符集里面顯示的就是 ╚,于是國(guó)際標(biāo)準(zhǔn)化組織(ISO)及國(guó)際電工委員會(huì)(IEC)聯(lián)合制定的一系列8位字符集的標(biāo)準(zhǔn) ISO/8859-1(Latin-1) ,它繼承了 CP437 字符編碼的128-159之間的字符,所以它是從160開(kāi)始定義的,ISO-8859-1在 CP437 的基礎(chǔ)上重新定義了 160~255之間的字符。

 

多字節(jié)字符編碼 GBK

ASCII 字符編碼是單字節(jié)編碼,計(jì)算機(jī)進(jìn)入中國(guó)后面臨的一個(gè)問(wèn)題是如何處理漢字,對(duì)于拉丁語(yǔ)系國(guó)家來(lái)說(shuō)通過(guò)擴(kuò)展最高位,單字節(jié)表示所有的字符已經(jīng)綽綽有余,但是對(duì)于亞洲國(guó)家來(lái)說(shuō)一個(gè)字節(jié)就顯得捉襟見(jiàn)肘了。于是中國(guó)人自己弄了一套叫 GB2312 的雙字節(jié)字符編碼,又稱(chēng)GB0,1981 由中國(guó)國(guó)家標(biāo)準(zhǔn)總局發(fā)布。GB2312 編碼共收錄了6763個(gè)漢字,同時(shí)他還兼容 ASCII,GB 2312的出現(xiàn),基本滿足了漢字的計(jì)算機(jī)處理需要,它所收錄的漢字已經(jīng)覆蓋中國(guó)大陸99.75%的使用頻率,不過(guò) GB2312 還是不能100%滿足中國(guó)漢字的需求,對(duì)一些罕見(jiàn)的字和繁體字 GB2312 沒(méi)法處理,后來(lái)就在GB2312的基礎(chǔ)上創(chuàng)建了一種叫 GBK 的編碼,GBK 不僅收錄了27484個(gè)漢字,同時(shí)還收錄了藏文、蒙文、維吾爾文等主要的少數(shù)民族文字。同樣 GBK 也是兼容 ASCII 編碼的,對(duì)于英文字符用1個(gè)字節(jié)來(lái)表示,漢字用兩個(gè)字節(jié)來(lái)標(biāo)識(shí)。

Unicode 的問(wèn)世

GBK僅僅只是解決了我們自己的問(wèn)題,但是計(jì)算機(jī)不止是美國(guó)人和中國(guó)人用啊,還有歐洲、亞洲其他國(guó)家的文字諸如日文、韓文全世界各地的文字加起來(lái)估計(jì)也有好幾十萬(wàn),這已經(jīng)大大超出了ASCII 碼甚至GBK 所能表示的范圍了,雖然各個(gè)國(guó)家可以制定自己的編碼方案,但是數(shù)據(jù)在不同國(guó)家傳輸就會(huì)出現(xiàn)各種各樣的亂碼問(wèn)題。如果只用一種字符編碼就能表示地球甚至火星上任何一個(gè)字符時(shí),問(wèn)題就迎刃而解了。是它,是它,就是它,我們的小英雄,統(tǒng)一聯(lián)盟國(guó)際組織提出了Unicode 編碼,Unicode 的學(xué)名是"Universal Multiple-Octet Coded Character Set",簡(jiǎn)稱(chēng)為UCS。它為世界上每一種語(yǔ)言的每一個(gè)字符定義了一個(gè)唯一的字符碼,Unicode 標(biāo)準(zhǔn)使用十六進(jìn)制數(shù)字表示,數(shù)字前面加上前綴 U+,比如字母『A』的Unicode編碼是 U+0041,漢字『中』的Unicode 編碼是U+4E2D

Unicode有兩種格式:UCS-2和UCS-4。UCS-2就是用兩個(gè)字節(jié)編碼,一共16個(gè)比特位,這樣理論上最多可以表示65536個(gè)字符,不過(guò)要表示全世界所有的字符顯示65536個(gè)數(shù)字還遠(yuǎn)遠(yuǎn)不過(guò),因?yàn)楣鉂h字就有近10萬(wàn)個(gè),因此Unicode4.0規(guī)范定義了一組附加的字符編碼,UCS-4就是用4個(gè)字節(jié)(實(shí)際上只用了31位,最高位必須為0)。理論上完全可以涵蓋一切語(yǔ)言所用的符號(hào)。

Unicode 的局限

但是 Unicode 有一定的局限性,一個(gè) Unicode 字符在網(wǎng)絡(luò)上傳輸或者最終存儲(chǔ)起來(lái)的時(shí)候,并不見(jiàn)得每個(gè)字符都需要兩個(gè)字節(jié),比如字符“A“,用一個(gè)字節(jié)就可以表示的字符,偏偏還要用兩個(gè)字節(jié),顯然太浪費(fèi)空間了。

第二問(wèn)題是,一個(gè) Unicode 字符保存到計(jì)算機(jī)里面時(shí)就是一串01數(shù)字,那么計(jì)算機(jī)怎么知道一個(gè)2字節(jié)的Unicode字符是表示一個(gè)2字節(jié)的字符呢,例如“漢”字的 Unicode 編碼是 U+6C49,我可以用4個(gè)ascii數(shù)字來(lái)傳輸、保存這個(gè)字符;也可以用utf-8編碼的3個(gè)連續(xù)的字節(jié)E6 B1 89來(lái)表示它。關(guān)鍵在于通信雙方都要認(rèn)可。因此Unicode編碼有不同的實(shí)現(xiàn)方式,比如:UTF-8、UTF-16等等。Unicode就像英語(yǔ)一樣,做為國(guó)與國(guó)之間交流世界通用的標(biāo)準(zhǔn),每個(gè)國(guó)家有自己的語(yǔ)言,他們把標(biāo)準(zhǔn)的英文文檔翻譯成自己國(guó)家的文字,這是實(shí)現(xiàn)方式,就像utf-8。

具體實(shí)現(xiàn):UTF-8

UTF-8(Unicode Transformation Format)作為 Unicode 的一種實(shí)現(xiàn)方式,廣泛應(yīng)用于互聯(lián)網(wǎng),它是一種變長(zhǎng)的字符編碼,可以根據(jù)具體情況用1-4個(gè)字節(jié)來(lái)表示一個(gè)字符。比如英文字符這些原本就可以用 ASCII 碼表示的字符用UTF-8表示時(shí)就只需要一個(gè)字節(jié)的空間,和 ASCII 是一樣的。對(duì)于多字節(jié)(n個(gè)字節(jié))的字符,第一個(gè)字節(jié)的前n為都設(shè)為1,第n+1位設(shè)為0,后面字節(jié)的前兩位都設(shè)為10。剩下的二進(jìn)制位全部用該字符的unicode碼填充。

 

以『好』為例,『好』對(duì)應(yīng)的 Unicode 是597D,對(duì)應(yīng)的區(qū)間是 0000 0800--0000 FFFF,因此它用 UTF-8 表示時(shí)需要用3個(gè)字節(jié)來(lái)存儲(chǔ),597D用二進(jìn)制表示是: 0101100101111101,填充到 1110xxxx 10xxxxxx 10xxxxxx 得到 11100101 10100101 10111101,轉(zhuǎn)換成16進(jìn)制是 e5a5bd,因此『好』的 Unicode 碼 U+597D 對(duì)應(yīng)的 UTF-8 編碼是 "E5A5BD"。你可以用 Python 代碼來(lái)驗(yàn)證:

>>> a = u"好" 
>>> a 
u'\u597d' 
>>> b = a.encode('utf-8') 
>>> len(b) 
3 
>>> b 
'\xe5\xa5\xbd'

現(xiàn)在總算把理論說(shuō)完了。再來(lái)說(shuō)說(shuō) Python 中的編碼問(wèn)題。Python 的誕生時(shí)間比 Unicode 要早很多,Python2 的默認(rèn)編碼是ASCII,正因?yàn)槿绱耍艑?dǎo)致很多的編碼問(wèn)題。

>>> import sys 
>>> sys.getdefaultencoding() 
'ascii'

所以在 Python2 中,源代碼文件必須顯示地指定編碼類(lèi)型,否則但凡代碼中出現(xiàn)有中文就會(huì)報(bào)語(yǔ)法錯(cuò)誤

# coding=utf-8 
或者是: 
# -*- coding: utf-8 -*- 

Python2 字符類(lèi)型

在 python2 中和字符串相關(guān)的數(shù)據(jù)類(lèi)型有 str 和 unicode 兩種類(lèi)型,它們繼承自 basestring,而 str 類(lèi)型的字符串的編碼格式可以是 ascii、utf-8、gbk等任何一種類(lèi)型。

 

對(duì)于漢字『好』,用 str 表示時(shí),它對(duì)應(yīng)的 utf-8 編碼 是'\xe5\xa5\xbd',對(duì)應(yīng)的 gbk 編碼是 '\xba\xc3',而用 unicode 表示時(shí),他對(duì)應(yīng)的符號(hào)就是u'\u597d',與u"好" 是等同的。

str 與 unicode 的轉(zhuǎn)換

在 Python 中 str 和 unicode 之間是如何轉(zhuǎn)換的呢?這兩種類(lèi)型的字符串之間的轉(zhuǎn)換就是靠decode 和 encode 這兩個(gè)函數(shù)。encode 負(fù)責(zé)將unicode 編碼成指定的字符編碼,用于存儲(chǔ)到磁盤(pán)或傳輸?shù)骄W(wǎng)絡(luò)中。而 decode 方法是根據(jù)指定的編碼方式解碼后在應(yīng)用程序中使用。

#從unicode轉(zhuǎn)換到str用 encode 
>>> b = u'好' 
>>> c = b.encode('utf-8') 
>>> type(c) 
<type 'str'> 
>>> c 
'\xe5\xa5\xbd' 
#從str類(lèi)型轉(zhuǎn)換到unicode用decode 
>>> d = c.decode('utf-8') 
>>> type(d) 
<type 'unicode'> 
>>> d 
u'\u597d' 

UnicodeXXXError 錯(cuò)誤的原因

在字符編碼轉(zhuǎn)換操作時(shí),遇到最多的問(wèn)題就是 UnicodeEncodeError 和 UnicodeDecodeError 錯(cuò)誤了,這些錯(cuò)誤的根本原因在于 Python2 默認(rèn)是使用 ascii 編碼進(jìn)行 decode 和 encode 操作,例如:

case 1

>>> s = '你好' 
>>> s.decode() 
Traceback (most recent call last): 
 File "<stdin>", line 1, in <module> 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)

當(dāng)把 s 轉(zhuǎn)換成 unicode 類(lèi)型的字符串時(shí),decode 方法默認(rèn)使用 ascii 編碼進(jìn)行解碼,而 ascii 字符集中根本就沒(méi)有中文字符『你好』,所以就出現(xiàn)了 UnicodeDecodeError,正確的方式是顯示地指定 UTF-8 字符編碼。

>>> s.decode('utf-8') 
u'\u4f60\u597d'

同樣地道理,對(duì)于 encode 操作,把 unicode字符串轉(zhuǎn)換成 str類(lèi)型的字符串時(shí),默認(rèn)也是使用 ascii 編碼進(jìn)行編碼轉(zhuǎn)換的,而 ascii 字符集找不到中文字符『你好』,于是就出現(xiàn)了UnicodeEncodeError 錯(cuò)誤。

>>> a = u'你好' 
>>> a.encode() 
Traceback (most recent call last): 
 File "<stdin>", line 1, in <module> 
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

case 2

str 類(lèi)型與 unicode 類(lèi)型的字符串混合使用時(shí),str 類(lèi)型的字符串會(huì)隱式地將 str 轉(zhuǎn)換成 unicode字符串,如果 str字符串是中文字符,那么就會(huì)出現(xiàn)UnicodeDecodeError 錯(cuò)誤,因?yàn)?python2 默認(rèn)會(huì)使用 ascii 編碼來(lái)進(jìn)行 decode 操作。

>>> s = '你好' # str類(lèi)型 
>>> y = u'python' # unicode類(lèi)型 
>>> s + y # 隱式轉(zhuǎn)換,即 s.decode('ascii') + u 
Traceback (most recent call last): 
 File "<stdin>", line 1, in <module> 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)

正確地方式是顯示地指定 UTF-8 字符編碼進(jìn)行解碼

>>> s.decode('utf-8') +y 
u'\u4f60\u597dpython'

亂碼

所有出現(xiàn)亂碼的原因都可以歸結(jié)為字符經(jīng)過(guò)不同編碼解碼在編碼的過(guò)程中使用的編碼格式不一致,比如:

# encoding: utf-8 
>>> a='好' 
>>> a 
'\xe5\xa5\xbd' 
>>> b=a.decode("utf-8") 
>>> b 
u'\u597d' 
>>> c=b.encode("gbk") 
>>> c 
'\xba\xc3' 
>>> print c

utf-8編碼的字符‘好'占用3個(gè)字節(jié),解碼成Unicode后,如果再用gbk來(lái)解碼后,只有2個(gè)字節(jié)的長(zhǎng)度了,最后出現(xiàn)了亂碼的問(wèn)題,因此防止亂碼的最好方式就是始終堅(jiān)持使用同一種編碼格式對(duì)字符進(jìn)行編碼和解碼操作。

 

總結(jié)

以上所述是小編給大家介紹的Python字符編碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • python scrapy爬蟲(chóng)代碼及填坑

    python scrapy爬蟲(chóng)代碼及填坑

    這篇文章主要介紹了python scrapy爬蟲(chóng)代碼及填坑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • python求定積分之quad函數(shù)詳解

    python求定積分之quad函數(shù)詳解

    這篇文章主要介紹了python求定積分之quad函數(shù)詳解,SciPy下實(shí)現(xiàn)求函數(shù)的積分的函數(shù)的基本使用,積分,高等數(shù)學(xué)里有大量的講述,基本意思就是求曲線下面積之和,需要的朋友可以參考下
    2023-08-08
  • python中pygame安裝不成功的解決辦法

    python中pygame安裝不成功的解決辦法

    盡管網(wǎng)上搜到許多篇關(guān)于pycharm如何安裝pygame庫(kù),但是跟著要求做還是安裝失敗,下面這篇文章主要給大家介紹了關(guān)于python中pygame安裝不成功的解決辦法,需要的朋友可以參考下
    2023-05-05
  • pytorch訓(xùn)練神經(jīng)網(wǎng)絡(luò)爆內(nèi)存的解決方案

    pytorch訓(xùn)練神經(jīng)網(wǎng)絡(luò)爆內(nèi)存的解決方案

    這篇文章主要介紹了pytorch訓(xùn)練神經(jīng)網(wǎng)絡(luò)爆內(nèi)存的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python導(dǎo)入Excel數(shù)據(jù)表的幾種實(shí)現(xiàn)方式

    Python導(dǎo)入Excel數(shù)據(jù)表的幾種實(shí)現(xiàn)方式

    在Python中可以使用許多庫(kù)來(lái)處理Excel文件,下面這篇文章主要給大家介紹了關(guān)于Python導(dǎo)入Excel數(shù)據(jù)表的幾種實(shí)現(xiàn)方式,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Python 模塊EasyGui詳細(xì)介紹

    Python 模塊EasyGui詳細(xì)介紹

    這篇文章主要介紹了Python 模塊EasyGui詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • Python語(yǔ)法快速入門(mén)指南

    Python語(yǔ)法快速入門(mén)指南

    這篇文章主要介紹了Python語(yǔ)法快速入門(mén)指南,包括注釋和引號(hào)的使用等基本語(yǔ)法知識(shí),需要的朋友可以參考下
    2015-10-10
  • 詳解tensorflow2.x版本無(wú)法調(diào)用gpu的一種解決方法

    詳解tensorflow2.x版本無(wú)法調(diào)用gpu的一種解決方法

    這篇文章主要介紹了詳解tensorflow2.x版本無(wú)法調(diào)用gpu的一種解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 詳解python爬取彈幕與數(shù)據(jù)分析

    詳解python爬取彈幕與數(shù)據(jù)分析

    這篇文章主要介紹了詳解python爬取彈幕與數(shù)據(jù)分析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • jupyter notebook tensorflow打印device信息實(shí)例

    jupyter notebook tensorflow打印device信息實(shí)例

    這篇文章主要介紹了jupyter notebook tensorflow打印device信息實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04

最新評(píng)論