一埋涧、編程語(yǔ)言介紹
1.1 機(jī)器語(yǔ)言
直接用計(jì)算機(jī)能理解的二進(jìn)制指令編寫程序板辽,直接控制硬件
1.2 匯編語(yǔ)言
用英文標(biāo)簽取代二進(jìn)制指令取編寫程序,本質(zhì)也是在直接控制硬件
1.3 高級(jí)語(yǔ)言
用人能理解的表達(dá)方式去編寫程序棘催,無(wú)需考慮硬件的操作細(xì)節(jié)
?????? 編譯型:類似于谷歌翻譯劲弦,運(yùn)行編譯型語(yǔ)言是相對(duì)于解釋型語(yǔ)言存在的,編譯型語(yǔ)言的首先將源代碼編譯生成機(jī)器語(yǔ)言巧鸭,再由機(jī)器運(yùn)行機(jī)器碼(二進(jìn)制)瓶您。程序在執(zhí)行之前需要一個(gè)專門的編譯過(guò)程,把程序編譯成為機(jī)器語(yǔ)言的文件纲仍,運(yùn)行時(shí)不需要重新翻譯呀袱,直接使用編譯的結(jié)果就行了。程序執(zhí)行效率高郑叠,依賴編譯器夜赵,跨平臺(tái)性差些。如C乡革、C++寇僧、Delphi等都是編譯型語(yǔ)言摊腋。
?????? 解釋型:類似于同聲傳譯,相對(duì)于編譯型語(yǔ)言存在的嘁傀,源代碼不是直接翻譯成機(jī)器語(yǔ)言兴蒸,而是先翻譯成中間代碼,再由解釋器對(duì)中間代碼進(jìn)行解釋運(yùn)行细办。程序不需要編譯橙凳,程序在運(yùn)行時(shí)才翻譯成機(jī)器語(yǔ)言,每執(zhí)行一次都要翻譯一次笑撞,因此效率比較低岛啸,依賴解釋器,跨平臺(tái)性好茴肥。比如Python/JavaScript / Perl/Shell等都是解釋型語(yǔ)言坚踩。
1.4 不同語(yǔ)言的比較
執(zhí)行效率:機(jī)器語(yǔ)言 > 匯編語(yǔ)言 > 高級(jí)語(yǔ)言(編譯型 > 解釋型)
開(kāi)發(fā)效率:機(jī)器語(yǔ)言 < 匯編語(yǔ)言 < 高級(jí)語(yǔ)言(編譯型 < 解釋型)
跨平臺(tái)性:機(jī)器語(yǔ)言 < 匯編語(yǔ)言 < 高級(jí)語(yǔ)言(編譯型 < 解釋型)
二、Python解釋器介紹
當(dāng)我們編寫Python代碼時(shí)瓤狐,我們得到的是一個(gè)包含Python代碼的以.py為擴(kuò)展名的文本文件瞬铸。要運(yùn)行代碼,就需要Python解釋器去執(zhí)行.py文件
Python解釋器的種類
CPython:由C語(yǔ)言開(kāi)發(fā)芬首,是使用最廣的Python解釋器赴捞。
IPython:基于CPython之上的一個(gè)交互式解釋器,在交互方式上有所增強(qiáng)郁稍,但是執(zhí)行Python代碼的功能和CPython是完全一樣的。
PyPy:PyPy是另一個(gè)Python解釋器胜宇,它的目標(biāo)是執(zhí)行速度耀怜。PyPy采用JIT技術(shù),對(duì)Python代碼進(jìn)行動(dòng)態(tài)編譯(注意不是解釋)桐愉,所以可以顯著提高Python代碼的執(zhí)行速度财破。
Jython:Jython是運(yùn)行在Java平臺(tái)上的Python解釋器,可以直接把Python代碼編譯成Java字節(jié)碼執(zhí)行从诲。
IronPython:IronPython和Jython類似左痢,只不過(guò)IronPython是運(yùn)行在微軟.Net平臺(tái)上的Python解釋器,可以直接把Python代碼編譯成.Net的字節(jié)碼系洛。
三俊性、安裝Python解釋器
我們?cè)赑ython官網(wǎng)下載的官方解釋器就是CPython。早在2008年P(guān)ython3就推出描扯,但由于其不向下兼容Python2定页,很多公司拒絕升級(jí),時(shí)至今日绽诚,仍然有很多運(yùn)行的項(xiàng)目由Python2寫成典徊,所以多版本共存是我們當(dāng)前必需的杭煎。下面我將介紹一下如何實(shí)現(xiàn)Python多版本共存。
博主是Windows操作系統(tǒng)卒落,就以Windows版本Python2的安裝進(jìn)行演示羡铲。
首先我們先進(jìn)入Python官網(wǎng),點(diǎn)擊Download根據(jù)你自己的電腦操作系統(tǒng)選擇相對(duì)應(yīng)的Python版本下載
點(diǎn)擊下載即可儡毕,下載完成后我們開(kāi)始安裝犀勒。
Install for all users,所有用戶皆可使用,點(diǎn)擊Next妥曲。
默認(rèn)安裝路徑是C盤贾费,但是C盤一般是系統(tǒng)盤,所以我們安裝到D盤檐盟。
這里 Add python.exe to Path 默認(rèn)是關(guān)閉的褂萧,意為將python.exe加入環(huán)境變量,這里博主保持默認(rèn)葵萎,以便在后面講解添加環(huán)境變量的方法导犹,點(diǎn)擊Next。
這樣就Python2的解釋器就安裝完成羡忘,那我們?cè)撊绾螜z測(cè)有沒(méi)有安裝成功呢谎痢?Win鍵+R鍵,輸入cmd卷雕,進(jìn)入控制臺(tái)节猿,輸入指令D: 回車(進(jìn)入D盤),cd D:\python27 回車(進(jìn)入你解釋器的文件夾)漫雕,python 回車滨嘱。如果你出現(xiàn)下圖一樣的提示,恭喜你安裝成功浸间。
這樣每一次進(jìn)入python2的交互環(huán)境是不是很麻煩太雨?這就要引申出環(huán)境變量這個(gè)問(wèn)題,將安裝路徑加入環(huán)境變量魁蒜,我們直接輸入你需要運(yùn)行的程序(python2)就可進(jìn)入交互界面囊扳。
右鍵此電腦找到高級(jí)系統(tǒng)設(shè)置,單擊進(jìn)入后找到環(huán)境變量 兜看,在系統(tǒng)變量中找到Path锥咸,雙擊進(jìn)入編輯,將python2的安裝路徑加入铣减,同時(shí)將pip的路徑加入(可安裝第三方庫(kù))她君,完成后一路確定即可。
這時(shí)我們直接輸入python就可進(jìn)入交互葫哗。
至此缔刹,python2解釋器的安裝完美完成球涛。那么怎么實(shí)現(xiàn)Python多版本的共存呢?首先我們要先安裝Python3解釋器校镐,方法流程同Python2解釋器的安裝幾乎沒(méi)有差別亿扁,當(dāng)然你可以在安裝時(shí)直接將其加入環(huán)境變量。安裝完成后鸟廓,我們需要玩點(diǎn)小把戲从祝,我們將Python27下的程序復(fù)制一個(gè),重新命名為python2引谜,同理python37的復(fù)制后命名為python3牍陌。
之后進(jìn)入控制臺(tái)分別輸入python2和python3,如果看到下圖员咽,恭喜你多版本共存達(dá)成毒涧。
四、執(zhí)行Python程序的兩種方式
1. 交互式:即時(shí)得到命令的執(zhí)行結(jié)果贝室,通常用來(lái)調(diào)試代碼
2.命令行:python3 D:\test.txt
??????? ??? 2.1 注意:后綴名并不影響程序的執(zhí)行契讲,但是約定俗成是.py結(jié)尾
? ? ? ? ? ? 2.2 運(yùn)行python程序經(jīng)歷3個(gè)階段
????????????????????? 先啟動(dòng)python解釋器
????????????????????? python解釋器將test.txt文件的內(nèi)容當(dāng)成文本內(nèi)容讀入內(nèi)存(此時(shí)的python解釋器就像是一個(gè)文本編輯器)
? ? ? ? ? ? ? ? ? ? ? ?python解釋器解釋執(zhí)行剛剛讀入的內(nèi)存代碼
五、變量
1. 什么是變量
?????? 量指的是記錄事物的狀態(tài)
? ? ? ?變指的是事物的狀態(tài)是可以改變的
2.為何要用變量
??????? 為了讓計(jì)算機(jī)具備人記憶事物狀態(tài)的技能
3.如何用變量
??????? 3.1 先定義
?????????????? 定義三大組成部分:
????????????????????? 變量名answer(標(biāo)識(shí)符):變量名應(yīng)該能反映出事物的屬性
????????????????????? 賦值符=:把變量值綁定給變量名
????????????????????? 變量值:就是事物的狀態(tài)
??????? 3.2 后引用
????????????????????? 通過(guò)變量名引用值
????????????????????? 變量名是訪問(wèn)到值的唯一方式
??????? 3.3 變量名的命名
?????????????? 大前提:變量名應(yīng)該見(jiàn)名知意
?????????????? 語(yǔ)法規(guī)定:
????????????????????? 1.變量名由字母滑频、數(shù)字捡偏、下劃線組成
????????????????????? 2.不能以數(shù)字開(kāi)頭
????????????????????? 3.不能使用python的關(guān)鍵字
????????????????????? ['and','as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else','except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in','is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try','while', 'with', 'yield']
?????????????? 命名風(fēng)格:
????????????????????? 純小寫加下劃線(在python中,變量名的命名推薦使用該方式)
???????????????????????????? age_of_oldboy=73
????????????????????? 駝峰體(類命名推薦此方法)
???????????????????????????? AgeOfOldboy=73
??????? 3.4 常量
?????????????? AGE_OF_OLDBOY=83? 全部大寫
??????? 3.5 變量值具備兩種特征
?????????????? id:是變量值在內(nèi)存中的唯一標(biāo)識(shí)(根據(jù)內(nèi)存地址計(jì)算而來(lái)峡迷,內(nèi)存地址不同則id不同银伟,內(nèi)存地址相同則id相同)
?????????????? type:不同類型的值用來(lái)記錄不同的狀態(tài)
??????? 3.6 內(nèi)存管理
?????????????? 垃圾回收機(jī)制:引用計(jì)數(shù)
????????????????????? 引用計(jì)數(shù)增加
???????????????????????????? age=18? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?# 18的引用計(jì)數(shù)為1
???????????????????????????? x=age? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 18的引用計(jì)數(shù)為2
????????????????????? 引用計(jì)數(shù)減少
???????????????????????????? delage? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?# 18的引用計(jì)數(shù)減為1
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? x = 10? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?# 18的引用計(jì)數(shù)減為0,此時(shí)18被回收凉当。
??????????????????????????? 若沒(méi)有del age這一步枣申,x = 10? ? ? ? ? ? ? ? ? #18的引用計(jì)數(shù)減為1,此時(shí)age = 18看杭。