Python入門篇

Python歷史

1989年,一個無聊的聖誕夜晚,荷蘭人Guido寫了Python,以他喜歡的喜劇名《Monty Python's flying Circus》命名

Python版本

  • 2.X發展到了2.7

  • 3.Xs始於2008年,3.5發佈於2015年9月,3.6發佈於2016年12月,3.7發佈於2018年6年6月

  • 2.x和3.x區別

    • 語句函數化,例如print(1,2)打印出1 2,但是2.x中意思是print語句打印元組,3.x中意思是函數的2個參數

    • 整除,例如1/2和1//2,3.x版本中/爲自然除

    • 3.x中raw_input重命名爲input,不再使用

    • raw_input

    • round函數,在3.x中i.5的取整變爲距離最近的偶數

    • 字符串統一使用Unicode


      • 異常的捕獲、拋出的語法改變

編程基礎

  • 程序:一組能夠讓計算機識別和執行的程序

  • 電子計算機:能夠執行程序的機器

  • 計算機發展的兩大人物:

    • 艾倫.麥席森.圖靈:被稱爲計算機之父

    • 馮.諾依曼:提出了一二進制爲數字計算機的數制基礎,計算機按照程序順序執行,計算機應該有五大部件

馮諾依曼體系架構

計算機應該由五大部件組成:

  • CPU:由運算器和控制器組成

  • 運算器:完成各種算數運算,邏輯運算,數據傳輸等數據加工處理

  • 控制器:控制程序的執行

  • CPU中還有寄存器和多級緩存

  • 存儲器:用於記憶程序和數據,例如內存

  • 輸入設備:將數據貨這程序輸入到計算機中,例如鼠標鍵盤

  • 輸出設備:將數據貨程序的處理結果展示給用戶,例如顯示器,打印機

計算機語言:人與計算機交互的語言

  • 低級語言:面向機器的語言,包括機器語言、彙編語言

  • 高級語言:接近自然語言和書數學語言的計算機語言。 高級語言首先要書寫源程序,通過編譯程序把源程序準換成機器指令的程序

  • 高級語言和低級語言之間需要一個轉換的工具:編譯器、解釋器
  • C,C++等語言的源代碼需要本地編譯

  • Java、Python、C#的源代碼需要被解釋器編譯成中間代碼(Bytecode)在虛擬機上運行

    • 編譯語言:把源代碼編譯後轉換成目標機器的CPU指令

    • 解釋語言:解釋後轉換成字節碼,運行在虛擬機上,解釋器執行中間代碼(JVM,PVM)

高級語言的發展

  • 非結構化語言

    • 編號或標籤,GOTO,子程序可以由多個入口和出口

    • 有分支,循環

  • 結構化語言

    • 任何基本結構只允許是唯一入口和唯一出口

    • 順序、分支、循環,廢棄GOTO

  • 面嚮對象語言

    • 更加接近人類認,萬事萬物抽象成對象,對象間關係抽象成類和繼承

    • 封裝,繼承,多態

  • 函數式語言

程序Programm

  • 程序=算法+數據結構
  • 數據是一切程序的核心

  • 數據結構是數據在計算機中的類型和組織方式

  • 算法是處理數據的方式,算法有優劣之分

寫程序需要注意事項

  1. 理清數據
  2. 理清處理方法
  3. 把數據設計轉換成數據結構,把處理方法轉換成算法
  4. 用設計範式來進行程序設備
  5. 世間程序皆有bug但要會debug

python解釋器

  1. 官方CPython:C語言開發,最廣泛的Python解釋器

  2. IPython:叫哥交互式,功能增強的Cpython

  3. PYPY:Python語言寫的Python解釋器,JIT技術,動態編譯python代碼

  4. Jython:Python的源代碼編譯成Java的字節碼,跑在JVM上

  5. IronPython:  與Jython類似,運行在.Net平臺上的解釋器,Python代碼被編譯成.Net的字節碼

python基礎語法(部分)

  • 轉義序列

    • \\ \t \r \n \' \"

    • 前綴r,把裏面的所有字符當普通字符對待

  • 續行:

    • 在行尾使用\

    • 如果使用各種括號,括號內是一個整體,內部不用\

  • 標識符:

    • 只能是字母,下劃線和數字

    • 不能以數字開頭

    • 不能是python關鍵字,exp:def,class不能作爲標識符

    • python對大小寫敏感

  • 約定:

    • 不允許使用中文

    • 不允許使用歧義單詞,exp:class_

    • 在python中不要隨便使用下劃線開頭的標識符

  • 常量:

    • 一旦賦值就不嫩改變值的標識符

    • python中無法定義常量 字面常量:

    • 一個單獨的量,如 12,"abc" 變量:

    • 賦值後可以改變值的標識符


    Python的語言類型

    • python是動態,強語言類型

  • 靜態編譯語言

    • 事先聲明變量類型,類型不能再在改變

    • 編譯時檢查

  • 動態編譯語言

    • 不用事先生命類型,隨時可以賦值爲其它類型

    • 編程時不知道是什麼類型,很難推斷

  • 強類型語言

    • 不同類型之間操作,必須先強制類型裝換爲同一類型.exp:print('a'+1)會報錯,只能是print('a'+'1')

  • 弱類型語言

    • 不同類型之間可以操作,自動隱式轉換exp:JavaScript中console.lg(1+'a')

原碼,反碼,補碼,負數表示法

  • 原碼: 5 => 0b101,1 => 0b1,-1 => -0b1,bin(-1)

  • 反碼:正數的反碼與原碼相同,負數的反碼符號位不變,其餘按位取反

  • 補碼:正數的補碼與原碼相同,負數的補碼符號位不變其餘按位取反後 +1(負數補碼的補碼就是原碼)

  • 負數表示法

    • 負數在計算機中使用補碼存儲,-1 的補碼爲1111 1111

    • 5-1 => 5+(-1)直覺上是0b101-0b1,其實計算機中是0b101+0b111111111.~12 = -13


  • 表達式Expression:由數字,符號,括號,變量等的組合

  1. 算數表達式

  2. 邏輯表達式

  3. 賦值表達式:python中,賦值即定義,如果一個變量已經定義,賦值相當於重新定義

內存管理

  • 垃圾回收機制 GC

  • python編程中一般無需關心變量的存亡,一般也不用關心內存的管理

  • Python使用對象引用計數記錄所有對象的引用數

  • 當對象引用數變爲0,它就可以被垃圾回收 GC

  • 有關性能的時候,就需要考慮變量的引用問題,但是該釋放內存,還是儘量不釋放內存,看需求.exp:內在正在整理釋放,這時無法使用這塊區間的數據

False等價布爾值,相當於bool(value)

1.空集合

  - 空字符串""

  - 空元祖  ()

  - 空列表  []

  - 空字典  {}

2.None對象

3.0


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章