7、Python入門____語(yǔ)法入門

前言


首先洞就,本次立項(xiàng)項(xiàng)目只是為了做網(wǎng)絡(luò)爬蟲(chóng)盆繁,本身不需要Python完整的知識(shí)鏈。因此旬蟋,對(duì)于基本語(yǔ)法油昂,我會(huì)浮光掠影,快速瀏覽并實(shí)驗(yàn),為的是直搗黃龍~

滴滴滴


Python語(yǔ)言介紹

Python是一種計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言冕碟。你可能已經(jīng)聽(tīng)說(shuō)過(guò)很多種流行的編程語(yǔ)言拦惋,比如非常難學(xué)的C語(yǔ)言,非常流行的Java語(yǔ)言安寺,適合初學(xué)者的Basic語(yǔ)言厕妖,適合網(wǎng)頁(yè)編程的JavaScript語(yǔ)言等等。

那Python是一種什么語(yǔ)言挑庶?

首先言秸,我們普及一下編程語(yǔ)言的基礎(chǔ)知識(shí)。用任何編程語(yǔ)言來(lái)開(kāi)發(fā)程序迎捺,都是為了讓計(jì)算機(jī)干活举畸,比如下載一個(gè)MP3,編寫一個(gè)文檔等等凳枝,而計(jì)算機(jī)干活的CPU只認(rèn)識(shí)機(jī)器指令抄沮,所以,盡管不同的編程語(yǔ)言差異極大岖瑰,最后都得“翻譯”成CPU可以執(zhí)行的機(jī)器指令合是。而不同的編程語(yǔ)言妆艘,干同一個(gè)活继控,編寫的代碼量是趴,差距也很大蔫缸。

比如搬男,完成同一個(gè)任務(wù)离钝,C語(yǔ)言要寫1000行代碼颗管,Java只需要寫100行蔫慧,而Python可能只要20行玫锋。

所以Python是一種相當(dāng)高級(jí)的語(yǔ)言蛾茉。

你也許會(huì)問(wèn),代碼少還不好撩鹿?代碼少的代價(jià)是運(yùn)行速度慢谦炬,C程序運(yùn)行1秒鐘,Java程序可能需要2秒节沦,而Python程序可能就需要10秒键思。

那是不是越低級(jí)的程序越難學(xué),越高級(jí)的程序越簡(jiǎn)單甫贯?表面上來(lái)說(shuō)吼鳞,是的,但是叫搁,在非常高的抽象計(jì)算中赔桌,高級(jí)的Python程序設(shè)計(jì)也是非常難學(xué)的供炎,所以,高級(jí)程序語(yǔ)言不等于簡(jiǎn)單疾党。

但是音诫,對(duì)于初學(xué)者和完成普通任務(wù),Python語(yǔ)言是非常簡(jiǎn)單易用的雪位。連Google都在大規(guī)模使用Python竭钝,你就不用擔(dān)心學(xué)了會(huì)沒(méi)用。

用Python可以做什么茧泪?可以做日常任務(wù),比如自動(dòng)備份你的MP3聋袋;可以做網(wǎng)站队伟,很多著名的網(wǎng)站包括YouTube就是Python寫的;可以做網(wǎng)絡(luò)游戲的后臺(tái)幽勒,很多在線游戲的后臺(tái)都是Python開(kāi)發(fā)的嗜侮。總之就是能干很多很多事啦啥容。

Python當(dāng)然也有不能干的事情锈颗,比如寫操作系統(tǒng),這個(gè)只能用C語(yǔ)言寫咪惠;寫手機(jī)應(yīng)用击吱,只能用Swift/Objective-C(針對(duì)iPhone)和Java(針對(duì)Android);寫3D游戲遥昧,最好用C或C++覆醇。

Python簡(jiǎn)介

現(xiàn)在,全世界差不多有600多種編程語(yǔ)言炭臭,但流行的編程語(yǔ)言也就那么20來(lái)種永脓。如果你聽(tīng)說(shuō)過(guò)TIOBE排行榜,你就能知道編程語(yǔ)言的大致流行程度鞋仍。這是最近10年最常用的10種編程語(yǔ)言的變化圖:

總的來(lái)說(shuō)常摧,這幾種編程語(yǔ)言各有千秋。C語(yǔ)言是可以用來(lái)編寫操作系統(tǒng)的貼近硬件的語(yǔ)言威创,所以落午,C語(yǔ)言適合開(kāi)發(fā)那些追求運(yùn)行速度、充分發(fā)揮硬件性能的程序肚豺。而Python是用來(lái)編寫應(yīng)用程序的高級(jí)編程語(yǔ)言板甘。

當(dāng)你用一種語(yǔ)言開(kāi)始作真正的軟件開(kāi)發(fā)時(shí),你除了編寫代碼外详炬,還需要很多基本的已經(jīng)寫好的現(xiàn)成的東西盐类,來(lái)幫助你加快開(kāi)發(fā)進(jìn)度寞奸。比如說(shuō),要編寫一個(gè)電子郵件客戶端在跳,如果先從最底層開(kāi)始編寫網(wǎng)絡(luò)協(xié)議相關(guān)的代碼枪萄,那估計(jì)一年半載也開(kāi)發(fā)不出來(lái)。高級(jí)編程語(yǔ)言通常都會(huì)提供一個(gè)比較完善的基礎(chǔ)代碼庫(kù)猫妙,讓你能直接調(diào)用瓷翻,比如,針對(duì)電子郵件協(xié)議的SMTP庫(kù)割坠,針對(duì)桌面環(huán)境的GUI庫(kù)齐帚,在這些已有的代碼庫(kù)的基礎(chǔ)上開(kāi)發(fā),一個(gè)電子郵件客戶端幾天就能開(kāi)發(fā)出來(lái)彼哼。

Python就為我們提供了非常完善的基礎(chǔ)代碼庫(kù)对妄,覆蓋了網(wǎng)絡(luò)文件敢朱、GUI剪菱、數(shù)據(jù)庫(kù)文本等大量?jī)?nèi)容拴签,被形象地稱作“內(nèi)置電池(batteries included)”孝常。用Python開(kāi)發(fā),許多功能不必從零編寫蚓哩,直接使用現(xiàn)成的即可构灸。

除了內(nèi)置的庫(kù)外,Python還有大量的第三方庫(kù)岸梨,也就是別人開(kāi)發(fā)的冻押,供你直接使用的東西。當(dāng)然盛嘿,如果你開(kāi)發(fā)的代碼通過(guò)很好的封裝洛巢,也可以作為第三方庫(kù)給別人使用。

許多大型網(wǎng)站就是用Python開(kāi)發(fā)的次兆,例如YouTube稿茉、Instagram,還有國(guó)內(nèi)的豆瓣芥炭。很多大公司漓库,包括Google、Yahoo等园蝠,甚至NASA(美國(guó)航空航天局)都大量地使用Python渺蒿。

那Python適合開(kāi)發(fā)哪些類型的應(yīng)用呢?

  • 首選是網(wǎng)絡(luò)應(yīng)用彪薛,包括網(wǎng)站茂装、后臺(tái)服務(wù)等等怠蹂;

  • 其次是許多日常需要的小工具,包括系統(tǒng)管理員需要的腳本任務(wù)等等少态;

  • 另外就是把其他語(yǔ)言開(kāi)發(fā)的程序再包裝起來(lái)城侧,方便使用。

最后說(shuō)說(shuō)Python的缺點(diǎn)彼妻。

任何編程語(yǔ)言都有缺點(diǎn)嫌佑,Python也不例外。優(yōu)點(diǎn)說(shuō)過(guò)了侨歉,那Python有哪些缺點(diǎn)呢屋摇?

  • 第一個(gè)缺點(diǎn)就是運(yùn)行速度慢,和C程序相比非常慢幽邓,因?yàn)镻ython是解釋型語(yǔ)言炮温,你的代碼在執(zhí)行時(shí)會(huì)一行一行地翻譯成CPU能理解的機(jī)器碼,這個(gè)翻譯過(guò)程非常耗時(shí)颊艳,所以很慢茅特。而C程序是運(yùn)行前直接編譯成CPU能執(zhí)行的機(jī)器碼忘分,所以非称逭恚快。
    但是大量的應(yīng)用程序不需要這么快的運(yùn)行速度妒峦,因?yàn)橛脩舾靖杏X(jué)不出來(lái)重斑。例如開(kāi)發(fā)一個(gè)下載MP3的網(wǎng)絡(luò)應(yīng)用程序,C程序的運(yùn)行時(shí)間需要0.001秒肯骇,而Python程序的運(yùn)行時(shí)間需要0.1秒窥浪,慢了100倍,但由于網(wǎng)絡(luò)更慢笛丙,需要等待1秒漾脂,你想,用戶能感覺(jué)到1.001秒和1.1秒的區(qū)別嗎胚鸯?這就好比F1賽車和普通的出租車在北京三環(huán)路上行駛的道理一樣骨稿,雖然F1賽車?yán)碚摃r(shí)速高達(dá)400公里,但由于三環(huán)路堵車的時(shí)速只有20公里姜钳,因此坦冠,作為乘客,你感覺(jué)的時(shí)速永遠(yuǎn)是20公里哥桥。
  • 第二個(gè)缺點(diǎn)就是代碼不能加密辙浑。如果要發(fā)布你的Python程序,實(shí)際上就是發(fā)布源代碼拟糕,這一點(diǎn)跟C語(yǔ)言不同判呕,C語(yǔ)言不用發(fā)布源代碼倦踢,只需要把編譯后的機(jī)器碼(也就是你在Windows上常見(jiàn)的xxx.exe文件)發(fā)布出去。要從機(jī)器碼反推出C代碼是不可能的佛玄,所以硼一,凡是編譯型的語(yǔ)言,都沒(méi)有這個(gè)問(wèn)題梦抢,而解釋型的語(yǔ)言般贼,則必須把源碼發(fā)布出去。

這個(gè)缺點(diǎn)僅限于你要編寫的軟件需要賣給別人掙錢的時(shí)候奥吩。好消息是目前的互聯(lián)網(wǎng)時(shí)代哼蛆,靠賣軟件授權(quán)的商業(yè)模式越來(lái)越少了,靠網(wǎng)站和移動(dòng)應(yīng)用賣服務(wù)的模式越來(lái)越多了霞赫,后一種模式不需要把源碼給別人腮介。

再說(shuō)了,現(xiàn)在如火如荼的開(kāi)源運(yùn)動(dòng)和互聯(lián)網(wǎng)自由開(kāi)放的精神是一致的端衰,互聯(lián)網(wǎng)上有無(wú)數(shù)非常優(yōu)秀的像Linux一樣的開(kāi)源代碼叠洗,我們千萬(wàn)不要高估自己寫的代碼真的有非常大的“商業(yè)價(jià)值”。那些大公司的代碼不愿意開(kāi)放的更重要的原因是代碼寫得太爛了旅东,一旦開(kāi)源灭抑,就沒(méi)人敢用他們的產(chǎn)品了。

安裝Python


因?yàn)镻ython是跨平臺(tái)的抵代,它可以運(yùn)行在Windows腾节、Mac和各種Linux/Unix系統(tǒng)上。在Windows上寫Python程序荤牍,放到Linux上也是能夠運(yùn)行的案腺。

要開(kāi)始學(xué)習(xí)Python編程,首先就得把Python安裝到你的電腦里康吵。安裝后劈榨,你會(huì)得到Python解釋器(就是負(fù)責(zé)運(yùn)行Python程序的),一個(gè)命令行交互環(huán)境晦嵌,還有一個(gè)簡(jiǎn)單的集成開(kāi)發(fā)環(huán)境同辣。

安裝Python 3.7

目前,Python有兩個(gè)版本耍铜,一個(gè)是2.x版邑闺,一個(gè)是3.x版,這兩個(gè)版本是不兼容的棕兼。由于3.x版越來(lái)越普及陡舅,我們的教程將以最新的Python 3.7版本為基礎(chǔ)。請(qǐng)確保你的電腦上安裝的Python版本是最新的3.7.x伴挚,這樣靶衍,你才能無(wú)痛學(xué)習(xí)這個(gè)教程灾炭。

  • 在Windows上運(yùn)行Python時(shí),請(qǐng)先啟動(dòng)命令行颅眶,然后運(yùn)行python蜈出。
  • 在Mac和Linux上運(yùn)行Python時(shí),請(qǐng)打開(kāi)終端涛酗,然后運(yùn)行python3铡原。

Python解釋器


當(dāng)我們編寫Python代碼時(shí),我們得到的是一個(gè)包含Python代碼的以.py為擴(kuò)展名的文本文件商叹。要運(yùn)行代碼燕刻,就需要Python解釋器去執(zhí)行.py文件。

由于整個(gè)Python語(yǔ)言從規(guī)范到解釋器都是開(kāi)源的剖笙,所以理論上卵洗,只要水平夠高,任何人都可以編寫Python解釋器來(lái)執(zhí)行Python代碼(當(dāng)然難度很大)弥咪。事實(shí)上过蹂,確實(shí)存在多種Python解釋器。

1聚至、CPython

當(dāng)我們從Python官方網(wǎng)站下載并安裝好Python 3.x后酷勺,我們就直接獲得了一個(gè)官方版本的解釋器:CPython。這個(gè)解釋器是用C語(yǔ)言開(kāi)發(fā)的晚岭,所以叫CPython鸥印。在命令行下運(yùn)行python就是啟動(dòng)CPython解釋器勋功。

CPython是使用最廣的Python解釋器坦报。教程的所有代碼也都在CPython下執(zhí)行。

2狂鞋、IPython

IPython是基于CPython之上的一個(gè)交互式解釋器片择,也就是說(shuō),IPython只是在交互方式上有所增強(qiáng)骚揍,但是執(zhí)行Python代碼的功能和CPython是完全一樣的字管。好比很多國(guó)產(chǎn)瀏覽器雖然外觀不同,但內(nèi)核其實(shí)都是調(diào)用了IE信不。

CPython用>>>作為提示符
IPython用In [序號(hào)]:作為提示符嘲叔。

3、PyPy

PyPy是另一個(gè)Python解釋器抽活,它的目標(biāo)是執(zhí)行速度硫戈。PyPy采用JIT技術(shù),對(duì)Python代碼進(jìn)行動(dòng)態(tài)編譯(注意不是解釋)下硕,所以可以顯著提高Python代碼的執(zhí)行速度丁逝。

絕大部分Python代碼都可以在PyPy下運(yùn)行汁胆,但是PyPy和CPython有一些是不同的,這就導(dǎo)致相同的Python代碼在兩種解釋器下執(zhí)行可能會(huì)有不同的結(jié)果霜幼。如果你的代碼要放到PyPy下執(zhí)行嫩码,就需要了解PyPy和CPython的不同點(diǎn)。

4罪既、Jython

Jython是運(yùn)行在Java平臺(tái)上的Python解釋器铸题,可以直接把Python代碼編譯成Java字節(jié)碼執(zhí)行。

5琢感、IronPython

IronPythonJython類似回挽,只不過(guò)IronPython是運(yùn)行在微軟.Net平臺(tái)上的Python解釋器,可以直接把Python代碼編譯成.Net的字節(jié)碼猩谊。

小結(jié)

Python的解釋器很多千劈,但使用最廣泛的還是CPython

如果要和Java或.Net平臺(tái)交互牌捷,最好的辦法不是用Jython或IronPython墙牌,而是通過(guò)網(wǎng)絡(luò)調(diào)用來(lái)交互,確保各程序之間的獨(dú)立性暗甥。

語(yǔ)法快速入門


1. 打印輸出

如果要讓Python打印出指定的文字喜滨,可以用print()函數(shù),然后把希望打印的文字用單引號(hào)或者雙引號(hào)括起來(lái)撤防,但不能混用單引號(hào)和雙引號(hào):

>>> print('hello, world')
hello, world

這種用單引號(hào)或者雙引號(hào)括起來(lái)的文本在程序中叫字符串

2. 直接運(yùn)行py文件

有同學(xué)問(wèn)虽风,能不能像.exe文件那樣直接運(yùn)行.py文件呢?在Windows上是不行的寄月,但是辜膝,在MacLinux上是可以的,方法是在.py文件的第一行加上一個(gè)特殊的注釋

#!/usr/bin/env python3

print('hello, world')

然后漾肮,通過(guò)命令給hello.py以執(zhí)行權(quán)限:

$ chmod a+x hello.py

就可以直接運(yùn)行hello.py了厂抖,比如在Mac下運(yùn)行:

3. 輸出

print()函數(shù)也可以接受多個(gè)字符串,用逗號(hào)“,”隔開(kāi)克懊,就可以連成一串輸出:

>>> print('The quick brown fox', 'jumps over', 'the lazy dog')
The quick brown fox jumps over the lazy dog

4. 輸入

現(xiàn)在忱辅,你已經(jīng)可以用print()輸出你想要的結(jié)果了。但是谭溉,如果要讓用戶從電腦輸入一些字符怎么辦墙懂?Python提供了一個(gè)input(),可以讓用戶輸入字符串扮念,并存放到一個(gè)變量里损搬。比如輸入用戶的名字:

>>> name = input()
Michael
print(name)

但是程序運(yùn)行的時(shí)候,沒(méi)有任何提示信息告訴用戶:“嘿,趕緊輸入你的名字”场躯,這樣顯得很不友好谈为。幸好,input()可以讓你顯示一個(gè)字符串來(lái)提示用戶踢关,于是我們把代碼改成:

name = input('please enter your name: ')
print('hello,', name)

再次運(yùn)行這個(gè)程序伞鲫,你會(huì)發(fā)現(xiàn),程序一運(yùn)行签舞,會(huì)首先打印出please enter your name:秕脓,這樣,用戶就可以根據(jù)提示儒搭,輸入名字后吠架,得到hello, xxx的輸出:

C:\Workspace> python hello.py
please enter your name: Michael
hello, Michael

輸入是Input,輸出是Output搂鲫,因此傍药,我們把輸入輸出統(tǒng)稱為Input/Output,或者簡(jiǎn)寫為IO魂仍。

input()print()是在命令行下面最基本的輸入和輸出拐辽,但是,用戶也可以通過(guò)其他更高級(jí)的圖形界面完成輸入和輸出擦酌,比如俱诸,在網(wǎng)頁(yè)上的一個(gè)文本框輸入自己的名字,點(diǎn)擊“確定”后在網(wǎng)頁(yè)上看到輸出信息赊舶。

5. Python基礎(chǔ)

Python是一種計(jì)算機(jī)編程語(yǔ)言睁搭。計(jì)算機(jī)編程語(yǔ)言和我們?nèi)粘J褂玫淖匀徽Z(yǔ)言有所不同,最大的區(qū)別就是笼平,自然語(yǔ)言在不同的語(yǔ)境下有不同的理解园骆,而計(jì)算機(jī)要根據(jù)編程語(yǔ)言執(zhí)行任務(wù),就必須保證編程語(yǔ)言寫出的程序決不能有歧義出吹,所以遇伞,任何一種編程語(yǔ)言都有自己的一套語(yǔ)法辙喂,編譯器或者解釋器就是負(fù)責(zé)把符合語(yǔ)法的程序代碼轉(zhuǎn)換成CPU能夠執(zhí)行的機(jī)器碼捶牢,然后執(zhí)行。Python也不例外巍耗。

Python的語(yǔ)法比較簡(jiǎn)單秋麸,采用縮進(jìn)方式,寫出來(lái)的代碼就像下面的樣子:

# print absolute value of an integer:
a = 100
if a >= 0:
    print(a)
else:
    print(-a)

#開(kāi)頭的語(yǔ)句是注釋炬太,注釋是給人看的灸蟆,可以是任意內(nèi)容,解釋器會(huì)忽略掉注釋亲族。其他每一行都是一個(gè)語(yǔ)句炒考,當(dāng)語(yǔ)句以冒號(hào):結(jié)尾時(shí)可缚,縮進(jìn)的語(yǔ)句視為代碼塊。

縮進(jìn)有利有弊斋枢。好處是強(qiáng)迫你寫出格式化的代碼帘靡,但沒(méi)有規(guī)定縮進(jìn)是幾個(gè)空格還是Tab。按照約定俗成的管理瓤帚,應(yīng)該始終堅(jiān)持使用4個(gè)空格的縮進(jìn)描姚。

縮進(jìn)的另一個(gè)好處是強(qiáng)迫你寫出縮進(jìn)較少的代碼,你會(huì)傾向于把一段很長(zhǎng)的代碼拆分成若干函數(shù)戈次,從而得到縮進(jìn)較少的代碼轩勘。

縮進(jìn)的壞處就是“復(fù)制-粘貼”功能失效了,這是最坑爹的地方怯邪。當(dāng)你重構(gòu)代碼時(shí)绊寻,粘貼過(guò)去的代碼必須重新檢查縮進(jìn)是否正確。此外悬秉,IDE很難像格式化Java代碼那樣格式化Python代碼榛斯。

最后,請(qǐng)務(wù)必注意搂捧,Python程序是大小寫敏感的驮俗,如果寫錯(cuò)了大小寫,程序會(huì)報(bào)錯(cuò)允跑。

小結(jié)
Python使用縮進(jìn)來(lái)組織代碼塊王凑,請(qǐng)務(wù)必遵守約定俗成的習(xí)慣,堅(jiān)持使用4個(gè)空格的縮進(jìn)聋丝。

在文本編輯器中索烹,需要設(shè)置把Tab自動(dòng)轉(zhuǎn)換為4個(gè)空格,確保不混用Tab和空格弱睦。

6. 數(shù)據(jù)類型

整數(shù)

Python可以處理任意大小的整數(shù)百姓,當(dāng)然包括負(fù)整數(shù),在程序中的表示方法和數(shù)學(xué)上的寫法一模一樣况木,例如:1垒拢,100,-8080火惊,0求类,等等。

計(jì)算機(jī)由于使用二進(jìn)制屹耐,所以尸疆,有時(shí)候用十六進(jìn)制表示整數(shù)比較方便,十六進(jìn)制用0x前綴和0-9,a-f表示寿弱,例如:0xff00犯眠,0xa5b4c3d2,等等症革。

浮點(diǎn)數(shù)

浮點(diǎn)數(shù)也就是小數(shù)阔逼,之所以稱為浮點(diǎn)數(shù),是因?yàn)榘凑湛茖W(xué)記數(shù)法表示時(shí)地沮,一個(gè)浮點(diǎn)數(shù)的小數(shù)點(diǎn)位置是可變的嗜浮,比如,1.23x109和12.3x108是完全相等的摩疑。

浮點(diǎn)數(shù)可以用數(shù)學(xué)寫法危融,如1.23,3.14雷袋,-9.01吉殃,等等。
但是對(duì)于很大或很小的浮點(diǎn)數(shù)楷怒,就必須用科學(xué)計(jì)數(shù)法表示蛋勺,把10用e替代,1.23x109就是1.23e9鸠删,或者12.3e8抱完,0.000012可以寫成1.2e-5,等等刃泡。

字符串

字符串是以單引號(hào)'或雙引號(hào)"括起來(lái)的任意文本巧娱,比如'abc',"xyz"等等烘贴。
請(qǐng)注意禁添,''""本身只是一種表示方式,不是字符串的一部分桨踪,因此老翘,字符串'abc'只有a,b锻离,c這3個(gè)字符铺峭。如果'本身也是一個(gè)字符,那就可以用""括起來(lái)纳账,比如"I'm OK"包含的字符是I逛薇,',m疏虫,空格,O,K這6個(gè)字符卧秘。

如果字符串內(nèi)部既包含'又包含"怎么辦呢袱?可以用轉(zhuǎn)義字符\來(lái)標(biāo)識(shí),比如:

轉(zhuǎn)義字符\可以轉(zhuǎn)義很多字符翅敌,比如\n表示換行羞福,\t表示制表符,字符\本身也要轉(zhuǎn)義蚯涮,所以\\表示的字符就是\治专,可以在Python的交互式命令行用print()打印字符串看看:

>>> print('I\'m ok.')
I'm ok.
>>> print('I\'m learning\nPython.')
I'm learning
Python.
>>> print('\\\n\\')
\
\

多行字符串'''...'''還可以在前面加上r使用:

# -*- coding: utf-8 -*-
print('''line1
line2
line3''')
布爾值

布爾值和布爾代數(shù)的表示完全一致,一個(gè)布爾值只有True遭顶、False兩種值张峰,要么是True,要么是False棒旗,在Python中喘批,可以直接用TrueFalse表示布爾值(請(qǐng)注意大小寫)铣揉,也可以通過(guò)布爾運(yùn)算計(jì)算出來(lái):

布爾值可以用and饶深、ornot運(yùn)算。

  • and運(yùn)算是與運(yùn)算逛拱,只有所有都為True敌厘,and運(yùn)算結(jié)果才是True:

  • or運(yùn)算是或運(yùn)算,只要其中有一個(gè)為True朽合,or運(yùn)算結(jié)果就是True:

  • not運(yùn)算是非運(yùn)算额湘,它是一個(gè)單目運(yùn)算符,把True變成False旁舰,F(xiàn)alse變成True:

布爾值經(jīng)常用在條件判斷中锋华,比如:

if age >= 18:
    print('adult')
else:
    print('teenager')
空值

空值是Python里一個(gè)特殊的值,用None表示箭窜。None不能理解為0毯焕,因?yàn)?是有意義的,而None是一個(gè)特殊的空值磺樱。

此外纳猫,Python還提供了列表字典等多種數(shù)據(jù)類型竹捉,還允許創(chuàng)建自定義數(shù)據(jù)類型芜辕。

變量

變量的概念基本上和初中代數(shù)的方程變量是一致的,只是在計(jì)算機(jī)程序中块差,變量不僅可以是數(shù)字侵续,還可以是任意數(shù)據(jù)類型倔丈。

在Python中,等號(hào)=是賦值語(yǔ)句状蜗,可以把任意數(shù)據(jù)類型賦值給變量需五,同一個(gè)變量可以反復(fù)賦值,而且可以是不同類型的變量

例如:

# -*- coding: utf-8 -*-
a = 123 # a是整數(shù)
print(a)
a = 'ABC' # a變?yōu)樽址?print(a)

最后轧坎,理解變量在計(jì)算機(jī)內(nèi)存中的表示也非常重要宏邮。當(dāng)我們寫:

a = 'ABC'

此時(shí),Python解釋器干了兩件事情:

  • 在內(nèi)存中創(chuàng)建了一個(gè)'ABC'的字符串缸血;

  • 在內(nèi)存中創(chuàng)建了一個(gè)名為a的變量蜜氨,并把它指向'ABC'。

也可以把一個(gè)變量a賦值給另一個(gè)變量b捎泻,這個(gè)操作實(shí)際上是把變量b指向變量a所指向的數(shù)據(jù)飒炎,例如下面的代碼:

# -*- coding: utf-8 -*-
a = 'ABC'
b = a
a = 'XYZ'
print(b)

最后打印出b的值:ABC

最后一行打印出變量b的內(nèi)容到底是'ABC'呢還是'XYZ'?如果從數(shù)學(xué)意義上理解族扰,就會(huì)錯(cuò)誤地得出b和a相同厌丑,也應(yīng)該是'XYZ',但實(shí)際上b的值是'ABC'渔呵,讓我們一行一行地執(zhí)行代碼怒竿,就可以看到到底發(fā)生了什么事:

執(zhí)行a = 'ABC',解釋器創(chuàng)建了字符串'ABC'和變量a扩氢,并把a指向'ABC'

執(zhí)行b = a耕驰,解釋器創(chuàng)建了變量b,并把b指向a指向的字符串'ABC'

執(zhí)行a = 'XYZ'录豺,解釋器創(chuàng)建了字符串'XYZ'朦肘,并把a的指向改為'XYZ',但b并沒(méi)有更改:

常量

所謂常量就是不能變的變量双饥,比如常用的數(shù)學(xué)常數(shù)π就是一個(gè)常量媒抠。在Python中,通常用全部大寫的變量名表示常量:

PI = 3.14159265359

但事實(shí)上PI仍然是一個(gè)變量咏花,Python根本沒(méi)有任何機(jī)制保證PI不會(huì)被改變趴生,所以,用全部大寫的變量名表示常量只是一個(gè)習(xí)慣上的用法昏翰,如果你一定要改變變量PI的值苍匆,也沒(méi)人能攔住你。

最后解釋一下整數(shù)的除法為什么也是精確的棚菊。在Python中浸踩,有兩種除法,一種除法是/

>>> 10 / 3
3.3333333333333335

/除法計(jì)算結(jié)果是浮點(diǎn)數(shù)统求,即使是兩個(gè)整數(shù)恰好整除检碗,結(jié)果也是浮點(diǎn)數(shù):

>>> 9 / 3
3.0

還有一種除法是//据块,稱為地板除,兩個(gè)整數(shù)的除法仍然是整數(shù):

>>> 10 // 3
3

你沒(méi)有看錯(cuò)后裸,整數(shù)的地板除//永遠(yuǎn)是整數(shù)瑰钮,即使除不盡冒滩。要做精確的除法,使用/就可以。

因?yàn)?code>//除法只取結(jié)果的整數(shù)部分道盏,所以Python還提供一個(gè)余數(shù)運(yùn)算鞭呕,可以得到兩個(gè)整數(shù)相除的余數(shù):

>>> 10 % 3
1

無(wú)論整數(shù)做//除法還是取余數(shù),結(jié)果永遠(yuǎn)是整數(shù)篇恒,所以扶檐,整數(shù)運(yùn)算結(jié)果永遠(yuǎn)是精確的。

小結(jié)
Python支持多種數(shù)據(jù)類型胁艰,在計(jì)算機(jī)內(nèi)部款筑,可以把任何數(shù)據(jù)都看成一個(gè)“對(duì)象”,而變量就是在程序中用來(lái)指向這些數(shù)據(jù)對(duì)象的腾么,對(duì)變量賦值就是把數(shù)據(jù)和變量給關(guān)聯(lián)起來(lái)奈梳。

對(duì)變量賦值x = y是把變量x指向真正的對(duì)象,該對(duì)象是變量y所指向的解虱。隨后對(duì)變量y的賦值不影響變量x的指向攘须。

注意:Python的整數(shù)沒(méi)有大小限制,而某些語(yǔ)言的整數(shù)根據(jù)其存儲(chǔ)長(zhǎng)度是有大小限制的殴泰,例如Java對(duì)32位整數(shù)的范圍限制在-2147483648-2147483647于宙。

Python的浮點(diǎn)數(shù)也沒(méi)有大小限制,但是超出一定范圍就直接表示為 inf(無(wú)限大)悍汛。

7.字符編碼


我們已經(jīng)講過(guò)了捞魁,字符串也是一種數(shù)據(jù)類型,但是离咐,字符串比較特殊的是還有一個(gè)編碼問(wèn)題谱俭。

因?yàn)橛?jì)算機(jī)只能處理數(shù)字,如果要處理文本健霹,就必須先把文本轉(zhuǎn)換為數(shù)字才能處理旺上。最早的計(jì)算機(jī)在設(shè)計(jì)時(shí)采用8個(gè)比特(bit)作為一個(gè)字節(jié)(byte),所以糖埋,一個(gè)字節(jié)能表示的最大的整數(shù)就是255(二進(jìn)制11111111=十進(jìn)制255)宣吱,如果要表示更大的整數(shù),就必須用更多的字節(jié)瞳别。比如兩個(gè)字節(jié)可以表示的最大整數(shù)是65535征候,4個(gè)字節(jié)可以表示的最大整數(shù)是4294967295杭攻。

由于計(jì)算機(jī)是美國(guó)人發(fā)明的,因此疤坝,最早只有127個(gè)字符被編碼到計(jì)算機(jī)里兆解,也就是大小寫英文字母、數(shù)字和一些符號(hào)跑揉,這個(gè)編碼表被稱為ASCII編碼锅睛,比如大寫字母A的編碼是65,小寫字母z的編碼是122历谍。

但是要處理中文顯然一個(gè)字節(jié)是不夠的现拒,至少需要兩個(gè)字節(jié)而且還不能和ASCII編碼沖突望侈,所以印蔬,中國(guó)制定了GB2312編碼,用來(lái)把中文編進(jìn)去脱衙。

你可以想得到的是侥猬,全世界有上百種語(yǔ)言,日本把日文編到Shift_JIS里捐韩,韓國(guó)把韓文編到Euc-kr里退唠,各國(guó)有各國(guó)的標(biāo)準(zhǔn),就會(huì)不可避免地出現(xiàn)沖突奥帘,結(jié)果就是铜邮,在多語(yǔ)言混合的文本中,顯示出來(lái)會(huì)有亂碼寨蹋。

因此松蒜,Unicode應(yīng)運(yùn)而生。Unicode把所有語(yǔ)言都統(tǒng)一到一套編碼里已旧,這樣就不會(huì)再有亂碼問(wèn)題了秸苗。

Unicode標(biāo)準(zhǔn)也在不斷發(fā)展,但最常用的是用兩個(gè)字節(jié)表示一個(gè)字符(如果要用到非常偏僻的字符运褪,就需要4個(gè)字節(jié))惊楼。現(xiàn)代操作系統(tǒng)和大多數(shù)編程語(yǔ)言都直接支持Unicode

現(xiàn)在秸讹,捋一捋ASCII編碼Unicode編碼的區(qū)別:

  • ASCII編碼是1個(gè)字節(jié)
  • Unicode編碼通常是2個(gè)字節(jié)檀咙。

字母A用ASCII編碼是十進(jìn)制的65,二進(jìn)制的01000001璃诀;

字符0用ASCII編碼是十進(jìn)制的48弧可,二進(jìn)制的00110000,注意字符'0'和整數(shù)0是不同的劣欢;

漢字已經(jīng)超出了ASCII編碼的范圍棕诵,用Unicode編碼是十進(jìn)制的20013裁良,二進(jìn)制的01001110 00101101。

你可以猜測(cè)校套,如果把ASCII編碼的A用Unicode編碼价脾,只需要在前面補(bǔ)0就可以,因此笛匙,A的Unicode編碼是00000000 01000001侨把。

新的問(wèn)題又出現(xiàn)了:如果統(tǒng)一成Unicode編碼,亂碼問(wèn)題從此消失了膳算。但是座硕,如果你寫的文本基本上全部是英文的話弛作,用Unicode編碼比ASCII編碼需要多一倍的存儲(chǔ)空間涕蜂,在存儲(chǔ)和傳輸上就十分不劃算。

所以映琳,本著節(jié)約的精神机隙,又出現(xiàn)了把Unicode編碼轉(zhuǎn)化為“可變長(zhǎng)編碼”UTF-8編碼。UTF-8編碼把一個(gè)Unicode字符根據(jù)不同的數(shù)字大小編碼成1-6個(gè)字節(jié)萨西,常用的英文字母被編碼成1個(gè)字節(jié)有鹿,漢字通常是3個(gè)字節(jié),只有很生僻的字符才會(huì)被編碼成4-6個(gè)字節(jié)谎脯。如果你要傳輸?shù)奈谋景罅坑⑽淖址邪希肬TF-8編碼就能節(jié)省空間:

字符 ASCII Unicode UTF-8
A 01000001 00000000 01000001 01000001
x 0100111000101101 11100100 10111000 10101101

從上面的表格還可以發(fā)現(xiàn),UTF-8編碼有一個(gè)額外的好處源梭,就是ASCII編碼實(shí)際上可以被看成是UTF-8編碼的一部分娱俺,所以,大量只支持ASCII編碼的歷史遺留軟件可以在UTF-8編碼下繼續(xù)工作废麻。

搞清楚了ASCII荠卷、UnicodeUTF-8的關(guān)系,我們就可以總結(jié)一下現(xiàn)在計(jì)算機(jī)系統(tǒng)通用的字符編碼工作方式:

在計(jì)算機(jī)內(nèi)存中烛愧,統(tǒng)一使用Unicode編碼油宜,當(dāng)需要保存到硬盤或者需要傳輸的時(shí)候,就轉(zhuǎn)換為UTF-8編碼怜姿。

用記事本編輯的時(shí)候慎冤,從文件讀取的UTF-8字符被轉(zhuǎn)換為Unicode字符到內(nèi)存里,編輯完成后沧卢,保存的時(shí)候再把Unicode轉(zhuǎn)換為UTF-8保存到文件

瀏覽網(wǎng)頁(yè)的時(shí)候蚁堤,服務(wù)器會(huì)把動(dòng)態(tài)生成的Unicode內(nèi)容轉(zhuǎn)換為UTF-8再傳輸?shù)綖g覽器:

所以你看到很多網(wǎng)頁(yè)的源碼上會(huì)有類似<meta charset="UTF-8" />的信息,表示該網(wǎng)頁(yè)正是用的UTF-8編碼搏恤。

Python的字符串

搞清楚了令人頭疼的字符編碼問(wèn)題后违寿,我們?cè)賮?lái)研究Python的字符串湃交。

在最新的Python 3版本中,字符串是以Unicode編碼的藤巢,也就是說(shuō)搞莺,Python的字符串支持多語(yǔ)言,例如:

>>> print('包含中文的str')
包含中文的str

對(duì)于單個(gè)字符的編碼掂咒,Python提供了ord()函數(shù)獲取字符的整數(shù)表示才沧,chr()函數(shù)把編碼轉(zhuǎn)換為對(duì)應(yīng)的字符:

>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'

如果知道字符的整數(shù)編碼,還可以用十六進(jìn)制這么寫str:

>>> '\u4e2d\u6587'
'中文'

兩種寫法完全是等價(jià)的绍刮。

由于Python的字符串類型是str温圆,在內(nèi)存中以Unicode表示,一個(gè)字符對(duì)應(yīng)若干個(gè)字節(jié)孩革。如果要在網(wǎng)絡(luò)上傳輸岁歉,或者保存到磁盤上,就需要把str變?yōu)橐?code>字節(jié)為單位的bytes膝蜈。

要注意區(qū)分'ABC'b'ABC'锅移,前者是str,后者雖然內(nèi)容顯示得和前者一樣饱搏,但bytes的每個(gè)字符都只占用一個(gè)字節(jié)非剃。

Unicode表示的str通過(guò)encode()方法可以編碼為指定的bytes,例如:

>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> '中文'.encode('ascii')
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)

反過(guò)來(lái)推沸,如果我們從網(wǎng)絡(luò)磁盤上讀取了字節(jié)流备绽,那么讀到的數(shù)據(jù)就是bytes。要把bytes變?yōu)?code>str鬓催,就需要用decode()方法:

>>> b'ABC'.decode('ascii')
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'

如果bytes中包含無(wú)法解碼的字節(jié)肺素,decode()方法會(huì)報(bào)錯(cuò):

>>> b'\xe4\xb8\xad\xff'.decode('utf-8')
Traceback (most recent call last):
  ...
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 3: invalid start byte

要計(jì)算str包含多少個(gè)字符,可以用len()函數(shù):

>>> len('ABC')
3
>>> len('中文')
2

len()函數(shù)計(jì)算的是str字符數(shù)深浮,如果換成bytes压怠,len()函數(shù)就計(jì)算字節(jié)數(shù):

>>> len(b'ABC')
3
>>> len(b'\xe4\xb8\xad\xe6\x96\x87')
6
>>> len('中文'.encode('utf-8'))
6

可見(jiàn),1個(gè)中文字符經(jīng)過(guò)UTF-8編碼后通常會(huì)占用3個(gè)字節(jié)飞苇,而1個(gè)英文字符只占用1個(gè)字節(jié)菌瘫。

在操作字符串時(shí),我們經(jīng)常遇到strbytes的互相轉(zhuǎn)換布卡。為了避免亂碼問(wèn)題雨让,應(yīng)當(dāng)始終堅(jiān)持使用UTF-8編碼對(duì)strbytes進(jìn)行轉(zhuǎn)換。

由于Python源代碼也是一個(gè)文本文件忿等,所以栖忠,當(dāng)你的源代碼中包含中文的時(shí)候,在保存源代碼時(shí),就需要?jiǎng)?wù)必指定保存為UTF-8編碼庵寞。當(dāng)Python解釋器讀取源代碼時(shí)狸相,為了讓它按UTF-8編碼讀取,我們通常在文件開(kāi)頭寫上這兩行:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

第一行注釋是為了告訴Linux/OS X系統(tǒng)捐川,這是一個(gè)Python可執(zhí)行程序脓鹃,Windows系統(tǒng)會(huì)忽略這個(gè)注釋;

第二行注釋是為了告訴Python解釋器古沥,按照UTF-8編碼讀取源代碼瘸右,否則,你在源代碼中寫的中文輸出可能會(huì)有亂碼岩齿。

申明了UTF-8編碼并不意味著你的.py文件就是UTF-8編碼的太颤,必須并且要確保文本編輯器正在使用UTF-8 without BOM編碼:

Notepad++

如果.py文件本身使用UTF-8編碼,并且也申明了# -*- coding: utf-8 -*-盹沈,打開(kāi)命令提示符測(cè)試就可以正常顯示中文:

格式化


最后一個(gè)常見(jiàn)的問(wèn)題是如何輸出格式化的字符串龄章。我們經(jīng)常會(huì)輸出類似'親愛(ài)的xxx你好!你xx月的話費(fèi)是xx襟诸,余額是xx'之類的字符串瓦堵,而xxx的內(nèi)容都是根據(jù)變量變化的,所以歌亲,需要一種簡(jiǎn)便的格式化字符串的方式。

在Python中澜驮,采用的格式化方式和C語(yǔ)言是一致的陷揪,用%實(shí)現(xiàn),舉例如下:

>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'

你可能猜到了杂穷,%運(yùn)算符就是用來(lái)格式化字符串的悍缠。在字符串內(nèi)部%s表示用字符串替換耐量,%d表示用整數(shù)替換飞蚓,有幾個(gè)%?占位符,后面就跟幾個(gè)變量或者值廊蜒,順序要對(duì)應(yīng)好趴拧。如果只有一個(gè)%?,括號(hào)可以省略山叮。

常見(jiàn)的占位符有:

占位符 替換內(nèi)容
%d 整數(shù)
%f 浮點(diǎn)數(shù)
%s 字符串
%x 十六進(jìn)制整數(shù)

如果你不太確定應(yīng)該用什么著榴,%s永遠(yuǎn)起作用,它會(huì)把任何數(shù)據(jù)類型轉(zhuǎn)換為字符串:

>>> 'Age: %s. Gender: %s' % (25, True)
'Age: 25. Gender: True'

有些時(shí)候屁倔,字符串里面的%是一個(gè)普通字符怎么辦脑又?這個(gè)時(shí)候就需要轉(zhuǎn)義,用%%來(lái)表示一個(gè)%

>>> 'growth rate: %d %%' % 7
'growth rate: 7 %'

當(dāng)strbytes互相轉(zhuǎn)換時(shí),需要指定編碼问麸。最常用的編碼是UTF-8往衷。Python當(dāng)然也支持其他編碼方式,比如把Unicode編碼成GB2312

>>> '中文'.encode('gb2312')
b'\xd6\xd0\xce\xc4'

但這種方式純屬自找麻煩严卖,如果沒(méi)有特殊業(yè)務(wù)要求炼绘,請(qǐng)牢記僅使用UTF-8編碼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末妄田,一起剝皮案震驚了整個(gè)濱河市俺亮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疟呐,老刑警劉巖脚曾,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異启具,居然都是意外死亡本讥,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門鲁冯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)拷沸,“玉大人,你說(shuō)我怎么就攤上這事薯演∽采郑” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵跨扮,是天一觀的道長(zhǎng)序无。 經(jīng)常有香客問(wèn)我,道長(zhǎng)衡创,這世上最難降的妖魔是什么帝嗡? 我笑而不...
    開(kāi)封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮璃氢,結(jié)果婚禮上哟玷,老公的妹妹穿的比我還像新娘。我一直安慰自己一也,他們只是感情好巢寡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著塘秦,像睡著了一般讼渊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尊剔,一...
    開(kāi)封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天爪幻,我揣著相機(jī)與錄音,去河邊找鬼。 笑死挨稿,一個(gè)胖子當(dāng)著我的面吹牛仇轻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播奶甘,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼篷店,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了臭家?” 一聲冷哼從身側(cè)響起疲陕,我...
    開(kāi)封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钉赁,沒(méi)想到半個(gè)月后蹄殃,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡你踩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年诅岩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片带膜。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吩谦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出膝藕,到底是詐尸還是另有隱情式廷,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布束莫,位于F島的核電站懒棉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏览绿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一穗慕、第九天 我趴在偏房一處隱蔽的房頂上張望饿敲。 院中可真熱鬧,春花似錦逛绵、人聲如沸怀各。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)瓢对。三九已至,卻和暖如春胰苏,著一層夾襖步出監(jiān)牢的瞬間硕蛹,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留法焰,地道東北人秧荆。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像埃仪,于是被迫代替她去往敵國(guó)和親乙濒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 字符集和編碼簡(jiǎn)介 在編程中常陈羊龋可以見(jiàn)到各種字符集和編碼颁股,包括ASCII,MBCS,Unicode等字符集。確切的說(shuō)...
    蘭山小亭閱讀 8,494評(píng)論 0 13
  • 個(gè)人筆記傻丝,方便自己查閱使用 Py.LangSpec.Contents Refs Built-in Closure ...
    freenik閱讀 67,711評(píng)論 0 5
  • 一甘有、python 變量和數(shù)據(jù)類型 1.整數(shù) Python可以處理任意大小的整數(shù),當(dāng)然包括負(fù)整數(shù)桑滩,在Python程序...
    績(jī)重KF閱讀 1,703評(píng)論 0 1
  • 楊慧昕 數(shù)四441 1梧疲,從本篇文章中我學(xué)到的最重要的概念: 每個(gè)人對(duì)倫敦都有不同感受。有人喜歡它的建筑歷史运准,有人喜...
    17數(shù)441楊慧昕閱讀 168評(píng)論 2 0
  • 金錢是道德的試金石幌氮。在金錢面前,有些善良的靈魂也會(huì)開(kāi)始變得丑陋扭曲胁澳。 ——題記 今天要講述的事情也是真實(shí)發(fā)生的...
    醉清風(fēng)_于叢洋閱讀 464評(píng)論 1 13