機器語言python
優勢:執行效率高程序員
缺點:開發效率極低,跨平臺性差編程
彙編語言python3.x
優勢:較機器語言執行效率稍低app
缺點:較機器語言開發效率稍高,仍然很低,跨平臺性差編程語言
高級語言ide
編譯型(C、C++、go)工具
相似谷歌翻譯,把程序全部的代碼翻譯成二進制指令後,操做系統根據指令直接操控硬件學習
解釋型(python、PHP、C#、Java(先編譯後解釋))測試
相似同聲翻譯,須要解釋器,一邊翻譯一邊執行
優勢:開發效率高
缺點:執行效率低
總結:
開發效率:(解釋型>編譯型)> 彙編語言 > 機器語言
執行效率:機器語言 > 彙編語言 >(編譯型 > 解釋型)
跨平臺性:解釋型 > 編譯型
學習難度:機器語言 > 彙編語言 > 高級語言
python解釋器版本:
python2.x
python3.x
打開python官網
不要下載最新版
環境變量:系統變量優先於用戶變量
輸入cmd打開命令提示符,輸入python測試是否安裝成功
python執行代碼的兩種方式
交互式:調試程序時使用,沒法保存文件
文件式(腳本式、命令行執行):python中約定俗成的以.py結尾,其實就是文本文件,其餘結尾也可執行
專門用於編寫python代碼
優勢:
提高開發效率
缺點:
比較佔用內存的資源
pycharm官網下載professional專業版
註釋是代碼之母,對代碼進行解釋說明,程序執行時不會被運行
加強代碼可讀性
不用所有註釋,本身以爲重要的部分加註釋
能夠英文或者中文,不能夠用拼音
變:事物的狀態能夠變化
量:描述事物的狀態
程序的執行本質是一系列狀態的變化,須要一種機制來反映或保存程序執行時的狀態,以及狀態的變化
變量名 賦值符號 變量值
age = 18
type變量類型
id內存地址
value變量值
只能是數字、字母、下劃線組成
數字不能開頭
不能是中文
區分大小寫
下劃線體 user_name
駝峯體 UserName
python中沒有常量,程序員約定俗成的把所有是大寫命名爲常量
python解釋器中-5~256的id相同,pycharm對此進行了優化範圍更廣
a = 25 b = 257 print(id(a)) >>>2335729820784 print(id(b)) >>>2335761804048 a = 255 b = 255 print(id(a)) >>>1838517664 print(id(b)) >>>1838517664
垃圾回收機制是自動幫助咱們管理內存,清理垃圾的一種工具
1)引用計數
當一個對象的引用被建立或者複製時,對象的引用計數加1;
當一個對象的引用被銷燬時,對象的引用計數減1;
當對象的引用計數減小爲0時,就意味着對象已經沒有被任何人使用了,能夠將其所佔用的內存釋放了。
優勢:
簡單、直觀
實時性,只要沒有了引用就釋放資源。
缺點:
維護引用計數須要消耗必定的資源
循環應用時,沒法回收。也正是由於這個緣由,才須要經過標記-清理和分代收集機制來輔助引用計數機制。
2)標記-清除
「標記-清除」是用來解決循環引入問題的。
# 變量名l1指向列表1,變量名l2指向列表2,以下 >>> l1=['列表1中的第一個元素'] # 列表1被引用一次 >>> l2=['列表2中的第一個元素'] # 列表2被引用一次 >>> l1.append(l2) # 把列表2追加到l1中做爲第二個元素,列表2的引用計數爲2 >>> l2.append(l1) # 把列表1追加到l2中做爲第二個元素,列表1的引用計數爲2 # l1與l2 # l1 = ['列表1中的第一個元素',列表2的內存地址] # l2 = ['列表2中的第一個元素',列表1的內存地址]
首先內存中有兩塊區域:堆區與棧區,在定義變量時,變量名存放於棧區,變量值存放於堆區,內存管理回收的則是堆區的內容
標記:標記的過程其實就是,遍歷全部的GC Roots對象(棧區中的全部內容或者線程均可以做爲GC Roots對象),而後將全部GC Roots的對象能夠直接或間接訪問到的對象標記爲存活的對象。
清除:清除的過程將遍歷堆中全部的對象,將沒有標記的對象所有清除掉。
3)分代回收 核心思想:在屢次掃描的狀況下,都沒有被回收的變量,gc機制就會認爲,該變量是經常使用變量,gc對其掃描的頻率會下降 分代:指的是根據存活時間來爲變量劃分不一樣等級(也就是不一樣的代) 回收:依然是使用引用計數做爲回收的依據