日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

AI 学习之路——轻松初探 Python 篇(三)

發(fā)布時(shí)間:2025/7/14 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AI 学习之路——轻松初探 Python 篇(三) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

喜歡小之的文章的可以關(guān)注公眾號(hào)「WeaponZhi」持續(xù)關(guān)注動(dòng)態(tài)

這是「AI 學(xué)習(xí)之路」的第 3 篇,「Python 學(xué)習(xí)」的第 3 篇

Python 字符串使用和 C 語言比較類似,但還有一些我們值得注意的地方需要關(guān)注,用這篇文章來幫助大家掌握 Python 的字符串吧!

編碼

不論什么語言,我們都需要考慮一下這個(gè)語言的編碼問題。「ASCII」編碼是我們最熟悉的編碼,但它只有 127 個(gè)字符被編碼到計(jì)算機(jī)里面了,顯然,像中日韓這類國(guó)家,語言文字比較特殊,就需要自己來指定編碼格式。

比如,中國(guó)自己就制定了「GB2312」編碼,韓文則是「EUC_KR」,俄語是「KOI8-R」,顯然,如果每一個(gè)國(guó)家都需要制作一個(gè)適配的編碼,那我們的計(jì)算機(jī)世界就要亂套了,不同國(guó)家之間信息的傳輸將變的寸步難行。如果電腦里沒有某個(gè)語言的編碼,那就會(huì)產(chǎn)生亂碼沖突,這是相當(dāng)麻煩的。

所以,大家商量了一下,就做出了「Unicode」這么個(gè)編碼格式,它干脆把所有的編碼都統(tǒng)一了,只要你用 Unicode 它就能保證沒有亂碼問題。

但 Unicode 也有缺點(diǎn)。比如如果一個(gè)文件是純英文來寫的,那所有的字符實(shí)際上都可以用過 ASCII 的 8 位二進(jìn)制來表示。我們知道 Unicode 是通過補(bǔ) 0 來表示一些低位數(shù)的字符的,這樣,為了保持兼容性,你實(shí)際上白白浪費(fèi)了兩倍的空間。

UTF-8 就是為了解決這樣一個(gè)問題而出現(xiàn)的。它是一個(gè)**「可變長(zhǎng)編碼」**,你不是嫌空間浪費(fèi)嗎,那么現(xiàn)在只要你用了 UTF-8,從此以后英文字母咱就可以用 1 個(gè)字節(jié)來存儲(chǔ)了,如果遇到像中文這種「高大上」但又比較復(fù)雜的字體,我們靈活對(duì)待,用三個(gè)字節(jié)來表示,實(shí)在有某些更加變態(tài)而復(fù)雜的字體,那最多可以拓展到用 6 個(gè)字節(jié)來存儲(chǔ)。總之,這樣下去,既解決了兼容性問題,又可以節(jié)約資源,資源問題迎刃而解了。

Python 中的字符串是用 Unicode 編碼的,所以 Python 可以支持多語言,當(dāng)我們保存的時(shí)候,我們需要把 Unicode 轉(zhuǎn)換為 UTF-8,使用的時(shí)候,再?gòu)奈募修D(zhuǎn)換 UTF-8 到 Unicode 到內(nèi)存中。

通過編碼的這種演進(jìn)過程,我們是不是會(huì)有所啟發(fā)呢?

**你會(huì)發(fā)現(xiàn),一切技術(shù)的產(chǎn)生和發(fā)展,都是為了解決問題而出現(xiàn)的。**大家如果細(xì)細(xì)的思考一下,不論是語言、技術(shù)、設(shè)計(jì)模式、架構(gòu),實(shí)際上他們的發(fā)展過程并不是一個(gè)憑空的技術(shù)升級(jí)行為,而是為了解決某種問題而誕生的。

「GB2312」是為了解決 ASCII 沒有中文而才創(chuàng)造出來的,「Unicode」是因?yàn)楦鲊?guó)語言不兼容而創(chuàng)造出來的。而 Unicode 對(duì)于資源的浪費(fèi)又促成了 UTF-8 的產(chǎn)生。最典型的問題驅(qū)動(dòng)技術(shù),就是設(shè)計(jì)模式了,設(shè)計(jì)模式的產(chǎn)生實(shí)際上就是各種為解決某些特定問題而總結(jié)出來的方案。

所以在技術(shù)上,遇到問題并不可怕,問題恰恰是最能幫助自己提升的,問題是創(chuàng)造力的源頭之一。我們同時(shí)在平時(shí)看書的時(shí)候,也要抱著解決問題的角度來學(xué)習(xí),如果你單純的去讀一本技術(shù)書,這本書又只有理論和代碼,你會(huì)覺得很枯燥。如果書里可以結(jié)合一些案例和問題,從這里展開講解,然后再介紹一些解決方案和代碼,這種教學(xué)方式效果就會(huì)特別好。比如我之前看過的一本書「Android 源碼設(shè)計(jì)模式」,它就是用這種方式來進(jìn)行展開的說明設(shè)計(jì)模式的場(chǎng)景,看完了這本書后,以后面對(duì)某種場(chǎng)景,我就特別容易回想起之前書中寫過的一些場(chǎng)景,從而產(chǎn)生記憶聯(lián)想。

不僅如此,如果想的再深一點(diǎn),你就會(huì)突然醒悟,實(shí)際上人類社會(huì)好像也是以這種形式來發(fā)展的...

是不是有點(diǎn)扯遠(yuǎn)了?我們還是來看看字符串吧。

字符串

Python 的字符串和 C 語言有些類似。我們簡(jiǎn)單的把常用的用法介紹一下即可,平時(shí)只要多寫幾次,就能比較熟練的掌握了(此節(jié)引用廖雪峰教程示例,作了簡(jiǎn)化)。

ord() 和 chr()

使用 ord() 獲取字符的整數(shù)表示,chr() 則是把編碼轉(zhuǎn)化為字符:

>>> ord('A') 65 >>> ord('中') 20013 >>> chr(66) 'B' >>> chr(25991) '文' 復(fù)制代碼

bytes

用帶「b」前綴的單引號(hào)或者雙引號(hào)字符來表示「bytes」類型的數(shù)據(jù),非常方便

x = b'ABC' encode() 和 decode() 復(fù)制代碼

開發(fā)的時(shí)候,經(jīng)常要把 str 和 bytes 進(jìn)行相互轉(zhuǎn)換, str 通過 encode() 轉(zhuǎn)化為 bytes,bytes 通過 decode() 轉(zhuǎn)化為 str

>>> 'ABC'.encode('ascii') b'ABC'>>> '中文'.encode('utf-8') b'\xe4\xb8\xad\xe6\x96\x87'>>> '中文'.encode('ascii') Trace back (most recent call last):File "<stdin>", line 1, in<module> UnicodeEncodeError>>> b'ABC'.decode('ascii') 'ABC'>>> b'\xe4\xb8\xad\xe6\x96\x87' '中文'>>> b'\xe4\xb8\xad\xff'.decode('utf-8') Tradeback(most recent call last):... UnicodeDecodeError 復(fù)制代碼

這里要注意容錯(cuò),encode 不能轉(zhuǎn)化超過參數(shù)編碼范圍的字符,而如果 bytes 中包含編碼格式無法解析的字符,decode() 也會(huì)報(bào)錯(cuò)。

len()

通過 len 計(jì)算字符串的字符數(shù)或者 bytes 的字節(jié)數(shù)

>>> len('ABC') 3 >>> len('中文') 2 >>> len(b'ABC') 3 >>> len(b'\xe4\xb8\xad\xe6\x87') 6 >>> len('中文'.encode('utf-8')) 6 復(fù)制代碼

從輸出結(jié)果發(fā)現(xiàn),中文占 3 個(gè)字節(jié),英文占 1 個(gè)字節(jié)

聲明編碼格式

如果希望 Python 解釋器可以按 UTF-8 編碼來讀取 .py 文件,需要在文件中聲明

#1 /usr/bin/env python3 # -*- coding: utf-8 -*- 復(fù)制代碼

第一行只對(duì) Linux/OS X 有效,它告訴系統(tǒng)這是一個(gè) Python 可執(zhí)行程序。第二行則告訴 Python 解釋器,這個(gè)文件要按照 UTF-8 編碼。如果不這樣寫,中文輸出會(huì)有亂碼。

字符串格式化

格式化和 C 有點(diǎn)像,用「%」實(shí)現(xiàn)

>>> 'Hello,%s' % 'world' 'Hello , world'>>> '你好%s,你有 ¥%d 嗎' % ('小之',50) '你好小之,你有 ¥50 嗎' 復(fù)制代碼

占位符中,%d 代表整數(shù),%f 代表浮點(diǎn)數(shù),%s 代表字符串,%x 代表十六進(jìn)制整數(shù),占位符要和 % 號(hào)后面的變量或者值一一對(duì)應(yīng),如果只有一個(gè)占位符,% 號(hào)后不需要括號(hào)。

占位符還可以控制空格、小數(shù)點(diǎn)和補(bǔ) 0 的位數(shù)。比如:

>>> print('%2d-%02d' % (5,1))5-01>>> print('%.2f' % 3.1415) 3.14 復(fù)制代碼

注意,「5-01」中,5 的前面是有兩個(gè)空格的。

如果你需要使用 % 這個(gè)字符顯示在字符串中,那么就需要轉(zhuǎn)義了,%% 表示一個(gè) %

>>> '小之公眾號(hào)的點(diǎn)贊率竟然超過了 %d%%' % 50 '小之公眾號(hào)的點(diǎn)贊率竟然超過了 50%' 復(fù)制代碼

歡迎關(guān)注我的公眾號(hào)

總結(jié)

以上是生活随笔為你收集整理的AI 学习之路——轻松初探 Python 篇(三)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。