1. 程式人生 > >第一章 Python基礎(一)

第一章 Python基礎(一)

科學計算 廣泛 java 賦值運算 退出 glob 單詞 技術 電視

1.1 編程語言

編程語言總體分以為機器語言、匯編語言、高級語言,如下

機器語言

由於計算機內部只能接受二進制代碼,因此,用二進制代碼0和1描述的指令稱為機器指令,全部機器指令的集合構成計算機的機器語言,用機器語言編程的程序稱為目標程序。只有目標程序才能被計算機直接識別和執行。但是機器語言編寫的程序無明顯特征,難以記憶,不便閱讀和書寫,且依賴於具體機種,局限性很大,機器語言屬於低級語言。

用機器語言編寫程序,編程人員要首先熟記所用計算機的全部指令代碼和代碼的涵義。手編程序時,程序員得自己處理每條指令和每一數據的存儲分配和輸入輸出,還得記住編程過程中每步所使用的工作單元處在何種狀態。這是一件十分繁瑣的工作。編寫程序花費的時間往往是實際運行時間的幾十倍或幾百倍。而且,編出的程序全是些0和1的指令代碼,直觀性差,還容易出錯。除了計算機生產廠家的專業人員外,絕大多數的程序員已經不再去學習機器語言了。

機器語言是微處理器理解和使用的,用於控制它的操作二進制代碼。

盡管機器語言好像是很復雜的,然而它是有規律的。

存在著多至100000種機器語言的指令。這意味著不能把這些種類全部列出來。

以下是一些示例:

指令部份的示例

0000 代表 加載(LOAD)

0001 代表 存儲(STORE)

...

暫存器部份的示例

0000 代表暫存器 A

0001 代表暫存器 B

...

存儲器部份的示例

000000000000 代表地址為 0 的存儲器

000000000001 代表地址為 1 的存儲器

000000010000 代表地址為 16 的存儲器

100000000000 代表地址為 2^11 的存儲器

集成示例

0000,0000,000000010000 代表 LOAD A, 16

0000,0001,000000000001 代表 LOAD B, 1

0001,0001,000000010000 代表 STORE B, 16

0001,0001,000000000001 代表 STORE B, 1[1]

匯編語言

匯編語言的實質和機器語言是相同的,都是直接對硬件操作,只不過指令采用了英文縮寫的標識符,更容易識別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來。匯編程序的每一句指令只能對應實際操作過程中的一個很細微的動作。例如移動、自增,因此匯編源程序一般比較冗長、復雜、容易出錯,而且使用匯編語言編程需要有更多的計算機專業知識,但匯編語言的優點也是顯而易見的,用匯編語言所能完成的操作不是一般高級語言所能夠實現的,而且源程序經匯編生成的可執行文件不僅比較小,而且執行速度很快。

匯編的hello world,打印一句hello world, 需要寫十多行,也是醉了。

; hello.asm 
section .data            ; 數據段聲明
        msg db "Hello, world!", 0xA     ; 要輸出的字符串
        len equ $ - msg                 ; 字串長度
section .text            ; 代碼段聲明
global _start            ; 指定入口函數
_start:                  ; 在屏幕上顯示一個字符串
        mov edx, len     ; 參數三:字符串長度
        mov ecx, msg     ; 參數二:要顯示的字符串
        mov ebx, 1       ; 參數一:文件描述符(stdout) 
        mov eax, 4       ; 系統調用號(sys_write) 
        int 0x80         ; 調用內核功能
                         ; 退出程序
        mov ebx, 0       ; 參數一:退出代碼
        mov eax, 1       ; 系統調用號(sys_exit) 
        int 0x80         ; 調用內核功能

高級語言

高級語言是大多數編程者的選擇。和匯編語言相比,它不但將許多相關的機器指令合成為單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時,由於省略了很多細節,編程者也就不需要有太多的專業知識。

高級語言主要是相對於匯編語言而言,它並不是特指某一種具體的語言,而是包括了很多編程語言,像最簡單的編程語言PASCAL語言也屬於高級語言。

高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可將它們分為兩類:

編譯類:編譯是指在應用源程序執行之前,就將程序源代碼“翻譯”成目標代碼(機器語言),因此其目標程序可以脫離其語言環境獨立執行(編譯後生成的可執行文件,是cpu可以理解的2進制的機器碼組成的),使用比較方便、效率較高。但應用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標文件(* .obj,也就是OBJ文件)才能執行,只有目標文件而沒有源代碼,修改很不方便。

用翻譯官舉例子

技術分享圖片

編譯後程序運行時不需要重新翻譯,直接使用編譯的結果就行了。程序執行效率高,依賴編譯器,跨平臺性差些。如C、C++、Delphi等

解釋類:執行方式類似於我們日常生活中的“同聲翻譯”,應用程序源代碼一邊由相應語言的解釋器“翻譯”成目標代碼(機器語言),一邊執行,因此效率比較低,而且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器(想運行,必須先裝上解釋器,就像跟老外說話,必須有翻譯在場),但這種方式比較靈活,可以動態地調整、修改應用程序。如Python、Java、PHP、Ruby等語言。

總結

機器語言

優點是最底層,速度最快,缺點是最復雜,開發效率最低

匯編語言

優點是比較底層,速度最快,缺點是復雜,開發效率最低

高級語言

編譯型語言執行速度快,不依賴語言環境運行,跨平臺差

解釋型跨平臺好,一份代碼,到處使用,缺點是執行速度慢,依賴解釋器運行

1.2 Python介紹

python的創始人為吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,Guido開始寫Python語言的編譯器。Python這個名字,來自Guido所摯愛的電視劇Monty Python’s Flying Circus。他希望這個新的叫做Python的語言,能符合他的理想:創造一種C和shell之間,功能全面,易學易用,可拓展的語言。

最新的TIOBE排行榜,Python趕超PHP占據第4, Python崇尚優美、清晰、簡單,是一個優秀並廣泛使用的語言。

Python可以應用於眾多領域,如:數據分析、組件集成、網絡服務、圖像處理、數值計算和科學計算等眾多領域。目前業內幾乎所有大中型互聯網企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。

1.3 變量

1.3.1 變量是什麽

變量就是一個存儲數據的內存空間對象,存儲的內容可以動態變化。定義一個變量,相當於向內存申請一個帶地址(變量名)的訪問空間對象,用來存儲數據,方便數據的查詢及運算。

1.3.2 變量名規則

1.變量名只能包括字母、數字和下劃線。變量名可以字母或下劃線開頭,不能以數字開頭,例如,可以將變量命名為abc_1,但不能將其命名為1_abc。

2.變量名不能包括空格,可以使用下劃線來分隔多個單詞。例如,變量名My_name是可行的,變量名 My name會引出錯誤。

3.不能使用python保留的關鍵字及函數名作變量名,例如,用print作變量名是不允許的。

4.變量名要盡量簡短及具描述性,可以用坨峰體表示,盡量做到短小精悍,見名知義。

5.python中變量名是區分大小寫的,例如,Name和name是兩個不同的變量名。

1.3.3 如何定義變量

在python當中定義一個變量很簡單,由於 python是一種弱類型語言,定義一個變量不需要聲明變量類型,直接給變量賦值就相當於定義一個變量了,變量類型對決於值的類型。註意,如果只寫一個變量,沒有賦值,那麽python認為這個變量沒有定義。

例如, >>>name = "Tom" 表示定義一個變量名為name的變量,變量值為"Tom",變量類型為字符串。

1.3.4 常量

在python中,沒有專門定義常量的語法,通常用全大寫變量名表示,僅是一種提示效果,例如,AGE = 22 (本質是變量) 。

1.4 基本數據類型

數字

int(整型)

在32位機器上,整數的位數為32位,取值範圍為-2**31~2**31-1,即-2147483648~2147483647

在64位系統上,整數的位數為64位,取值範圍為-2**63~2**63-1,即-9223372036854775808~9223372036854775807

long(長整型)

跟C語言不同,Python的長整數沒有指定位寬,即:Python沒有限制長整數數值的大小,但實際上由於機器內存有限,我們使用的長整數數值不可能無限大。

註意,自從Python2.2起,如果整數發生溢出,Python會自動將整數數據轉換為長整數,所以如今在長整數數據後面不加字母L也不會導致嚴重後果了。

字符串

在Python中,加了引號的字符都被認為是字符串

布爾型

布爾類型很簡單,就兩個值 ,一個True(真),一個False(假), 主要用記邏輯判斷

1.5 基本運算符

計算機可以進行的運算有很多種,可不只加減乘除這麽簡單,運算按種類可分為算數運算、比較運算、邏輯運算、賦值運算、成員運算、身份運算、位運算,今天我們暫只學習算數運算、比較運算、邏輯運算、賦值運算

算數運算

以下假設變量:a=10,b=20技術分享圖片

比較運算

以下假設變量:a=10,b=20技術分享圖片

賦值運算

以下假設變量:a=10,b=20技術分享圖片

邏輯運算技術分享圖片

第一章 Python基礎(一)