1. 程式人生 > >Python學習之路 - 基礎入門

Python學習之路 - 基礎入門

rdquo 下載 asd 64位 pyqt 最大 視頻網站 必備 真的

本系列文章使用的Python版本為3.6.2

使用開發工具為Pycharm2017

一、Python介紹

Python的創始人為吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·範羅蘇姆為了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,作為ABC語言的一種繼承。

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

技術分享

目前Python主要應用領域:

  • 雲計算:雲計算最火的語言, 典型應用OpenStack
  • WEB開發:眾多優秀的WEB框架,眾多大型網站均為Python開發,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
  • 科學運算、人工智能:典型庫NumPy, SciPy, Matplotlib, Enthought librarys,pandas
  • 系統運維:運維人員必備語言
  • 金融:量化交易,金融分析,在金融工程領域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作為動態語言的Python,語言結構清晰簡單,庫豐富,成熟穩定,科學計算和統計分析都很牛逼,生產效率遠遠高於c,c++,java,尤其擅長策略回測
  • 圖形GUI:PyQT, WxPython,TkInter

Python在一些公司的應用:

  • 谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬蟲、Google廣告等項目都在大量使用Python開發
  • CIA:美國中情局網站就是用Python開發的
  • NASA:美國航天局(NASA)大量使用Python進行數據分析和運算
  • YouTube:世界上最大的視頻網站YouTube就是用Python開發的
  • Dropbox:美國最大的在線雲存儲網站,全部用Python實現,每天網站處理10億個文件的上傳和下載
  • Instagram:美國最大的圖片分享社交網站,每天超過3千萬張照片被分享,全部用python開發
  • Facebook:大量的基礎庫均通過Python實現的
  • Redhat:世界上最流行的Linux發行版本中的yum包管理工具就是用python開發的
  • 豆瓣:公司幾乎所有的業務均是通過Python開發的
  • 知乎:國內最大的問答社區,通過Python開發(國外Quora)
  • 春雨醫生:國內知名的在線醫療網站是用Python開發的
  • 除上面之外,還有搜狐、金山、騰訊、盛大、網易、百度、阿裏、淘寶 、土豆、新浪、果殼等公司都在使用Python完成各種各樣的任務。

Python 是一門什麽樣的語言?

編程語言主要從以下幾個角度為進行分類,編譯型和解釋型、靜態語言和動態語言、強類型定義語言和弱類型定義語言,每個分類代表什麽意思呢,我們一起來看一下。

編譯和解釋的區別

編譯器是把源程序的每一條語句都編譯成機器語言,並保存成二進制文件,這樣運行時計算機可以直接以機器語言來運行此程序,速度很快;

而解釋器則是只在執行程序時,才一條一條的解釋成機器語言給計算機來執行,所以運行速度是不如編譯後的程序運行的快的。

這是因為計算機不能直接認識並執行我們寫的語句,它只能認識機器語言(是二進制的形式)。

就好像你想看一本英文書,編譯器會將整本書翻譯成中文供你觀看,這時你看的就會很方便,怎麽反復看都沒有問題;解釋器只會解釋你當前想要看的語句,如果你想再次看一遍同樣的語句則需要再次找解釋器解釋一遍,這樣就會給你的閱讀帶來麻煩。

動態語言和靜態語言

通常我們所說的動態語言、靜態語言是指動態類型語言和靜態類型語言。

(1)動態類型語言:動態類型語言是指在運行期間才去做數據類型檢查的語言,也就是說,在用動態類型的語言編程時,永遠也不用給任何變量指定數據類型,該語言會在你第一次賦值給變量時,在內部將數據類型記錄下來。Python和Ruby就是一種典型的動態類型語言,其他的各種腳本語言如VBScript也多少屬於動態類型語言。

(2)靜態類型語言:靜態類型語言與動態類型語言剛好相反,它的數據類型是在編譯其間檢查的,也就是說在寫程序時要聲明所有變量的數據類型,C/C++是靜態類型語言的典型代表,其他的靜態類型語言還有C#、JAVA等。

強類型定義語言和弱類型定義語言

(1)強類型定義語言:強制數據類型定義的語言。也就是說,一旦一個變量被指定了某個數據類型,如果不經過強制轉換,那麽它就永遠是這個數據類型了。舉個例子:如果你定義了一個整型變量a,那麽程序根本不可能將a當作字符串類型處理。強類型定義語言是類型安全的語言。

(2)弱類型定義語言:數據類型可以被忽略的語言。它與強類型定義語言相反, 一個變量可以賦不同數據類型的值。

強類型定義語言在速度上可能略遜色於弱類型定義語言,但是強類型定義語言帶來的嚴謹性能夠有效的避免許多錯誤。另外,“這門語言是不是動態語言”與“這門語言是否類型安全”之間是完全沒有聯系的!
例如:Python是動態語言,是強類型定義語言(類型安全的語言); VBScript是動態語言,是弱類型定義語言(類型不安全的語言); JAVA是靜態語言,是強類型定義語言(類型安全的語言)。

通過上面這些介紹,我們可以得出,python是一門動態解釋性的強類型定義語言。那這些基因使成就了Python的哪些優缺點呢?我們繼續往下看。

Python的優點

當你用一種語言開始作真正的軟件開發時,你除了編寫代碼外,還需要很多基本的已經寫好的現成的東西,來幫助你加快開發進度。比如說,要編寫一個電子郵件客戶端,如果先從最底層開始編寫網絡協議相關的代碼,那估計一年半載也開發不出來。高級編程語言通常都會提供一個比較完善的基礎代碼庫,讓你能直接調用,比如,針對電子郵件協議的SMTP庫,針對桌面環境的GUI庫,在這些已有的代碼庫的基礎上開發,一個電子郵件客戶端幾天就能開發出來。

Python就為我們提供了非常完善的基礎代碼庫,覆蓋了網絡、文件、GUI、數據庫、文本等大量內容,被形象地稱作“內置電池(batteries included)”。用Python開發,許多功能不必從零編寫,直接使用現成的即可。

除了內置的庫外,Python還有大量的第三方庫,也就是別人開發的,供你直接使用的東西。當然,如果你開發的代碼通過很好的封裝,也可以作為第三方庫給別人使用。

許多大型網站就是用Python開發的,例如YouTube、Instagram,還有國內的豆瓣。很多大公司,包括Google、Yahoo等,甚至NASA(美國航空航天局)都大量地使用Python。

龜叔給Python的定位是“優雅”、“明確”、“簡單”,所以Python程序看上去總是簡單易懂,初學者學Python,不但入門容易,而且將來深入下去,可以編寫那些非常非常復雜的程序。

總的來說,Python的哲學就是簡單優雅,盡量寫容易看明白的代碼,盡量寫少的代碼。如果一個資深程序員向你炫耀他寫的晦澀難懂、動不動就幾萬行的代碼,你可以盡情地嘲笑他。

那Python適合開發哪些類型的應用呢?

首選是網絡應用,包括網站、後臺服務等等;

其次是許多日常需要的小工具,包括系統管理員需要的腳本任務等等;

另外就是把其他語言開發的程序再包裝起來,方便使用。

Python的缺點

第一個缺點就是運行速度慢,和C程序相比非常慢,因為Python是解釋型語言,你的代碼在執行時會一行一行地翻譯成CPU能理解的機器碼,這個翻譯過程非常耗時,所以很慢。而C程序是運行前直接編譯成CPU能執行的機器碼,所以非常快。

但是大量的應用程序不需要這麽快的運行速度,因為用戶根本感覺不出來。例如開發一個下載MP3的網絡應用程序,C程序的運行時間需要0.001秒,而Python程序的運行時間需要0.1秒,慢了100倍,但由於網絡更慢,需要等待1秒,你想,用戶能感覺到1.001秒和1.1秒的區別嗎?這就好比F1賽車和普通的出租車在北京三環路上行駛的道理一樣,雖然F1賽車理論時速高達400公裏,但由於三環路堵車的時速只有20公裏,因此,作為乘客,你感覺的時速永遠是20公裏。

技術分享

第二個缺點就是代碼不能加密。如果要發布你的Python程序,實際上就是發布源代碼,這一點跟C語言不同,C語言不用發布源代碼,只需要把編譯後的機器碼(也就是你在Windows上常見的xxx.exe文件)發布出去。要從機器碼反推出C代碼是不可能的,所以,凡是編譯型的語言,都沒有這個問題,而解釋型的語言,則必須把源碼發布出去。

這個缺點僅限於你要編寫的軟件需要賣給別人掙錢的時候。好消息是目前的互聯網時代,靠賣軟件授權的商業模式越來越少了,靠網站和移動應用賣服務的模式越來越多了,後一種模式不需要把源碼給別人。

再說了,現在如火如荼的開源運動和互聯網自由開放的精神是一致的,互聯網上有無數非常優秀的像Linux一樣的開源代碼,我們千萬不要高估自己寫的代碼真的有非常大的“商業價值”。那些大公司的代碼不願意開放的更重要的原因是代碼寫得太爛了,一旦開源,就沒人敢用他們的產品了。

技術分享

二、安裝Python解釋器

在Mac上安裝Python

如果你正在使用Mac,系統是OS X 10.8~10.10,那麽系統自帶的Python版本是2.7。要安裝最新的Python 3.6,有兩個方法:

方法一:從Python官網下載Python 3.6的安裝程序(網速慢的同學請移步國內鏡像),雙擊運行並安裝;

方法二:如果安裝了Homebrew,直接通過命令brew install python3安裝即可。

在Linux上安裝Python

如果你正在使用Linux,那麽基本代表你有著Linux管理經驗,Linux上自帶Python2,如果想升級到最新版應該難不倒你的。

在Windows上安裝Python

首先,根據你的Windows版本(64位還是32位)從Python的官方網站下載Python 3.6對應的64位安裝程序或32位安裝程序,然後,運行下載的EXE安裝包:

技術分享

特別要註意勾上Add Python 3.6 to PATH,然後點“Install Now”即可完成安裝。

三、輸出

輸出方式經常使用的有兩種,第一種是print()函數,下面我們輸出hello world。

1 print("hello world")

輸出結果:

技術分享

第二種輸出方式需要引入sys庫,然後使用sys.stdout.write()函數輸出。

1 import sys
2 sys.stdout.write("afsd")

輸出結果:

技術分享

從輸出結果可以看出兩種輸出方式的差別,print()函數輸出結果後會再加一個換行,而sys.stdout.write()則沒有換行。

Python和其他常用高級語言不同的地方是Python一條語句結束時不需要加分號,並且在Python中也不會用到大括號,Python的語句就只是用換行符和縮進來表示語句之間的關系。

換行就表示一條語句的結束,縮進表示語句間的包含關系。

四、變量

由於Python是動態類型語言,所以不需要定義變量類型,直接寫變量名就可以。

1 name = "my name is Vector"
2 print(name)

輸出結果:

技術分享

在Python3中是可以直接輸入中文的,例如print(“姓名”)這樣,但是在Python2中需要在文件的頂部加上 -*- coding:utf-8 -*- 這句話,因為Python3的默認字符為Unicode,而Python2的默認字符為ASCII。

在Python中不僅有單行的字符串,還有多行的字符串,多行字符串用 ‘‘‘內容‘‘‘ 標記,如下。

1 msg = ‘‘‘
2 這裏是第一行
3 這裏是第二行
4 這裏是第三行
5 ‘‘‘
6 print(msg)

輸出結果:

技術分享

註釋

Python中的單行註釋用 # 來註釋,如下。

print(hello world) #這裏即將輸出hello world

多行註釋用三個單引號來標記 ‘‘‘內容‘‘‘,如下。

1 ‘‘‘
2 這裏是第一行註釋
3 這裏是第二行註釋
4 這裏是第三行註釋
5 ‘‘‘

在Python中單引號和雙引號沒有區別,都不會轉義其他字符。

五、輸入

用戶輸入通常我們用input()函數,如下

1 username = input(username:)
2 password = input(password:)
3 print(username,password)

我們輸入vector和asd123

輸出結果:

技術分享

有了輸入後,我們就可以控制格式化輸出了。

第一種格式化輸出方式

 1 name = input(name:)
 2 age = input(age:)
 3 
 4 info = ‘‘‘
 5 ------------- Info --------------
 6 Name:‘‘‘ + name + ‘‘‘
 7 age:‘‘‘ + age + ‘‘‘
 8 ------------- Over --------------
 9 ‘‘‘
10 print(info)

這裏我們輸入vector和18

輸出結果:

技術分享

第二種格式化輸出方式

用 %s %d %f 等來控制格式,並在結尾一次傳入參數,傳參格式為 %(參數1,參數2,...)

%s代表字符串,%d代表正數,%f代表浮點數

 1 name = input(name:)
 2 age = int(input(age:))
 3 
 4 info = ‘‘‘
 5 ------------- Info --------------
 6 Name:%s
 7 age:%d
 8 ------------- Over --------------
 9 ‘‘‘%(name,age)
10 print(info)

輸出結果:

技術分享

如果想將輸出的內容變成紅色,則用\033[31;1m%s\033[0m
如果想將輸出的內容變成綠色,則用\033[32;1m%s\033[0m

格式:\033[顯示方式;前景色;背景色m

說明:
前景色            背景色           顏色
---------------------------------------
30                40              黑色
31                41              紅色
32                42              綠色
33                43              黃色
34                44              藍色
35                45              紫紅色
36                46              青藍色
37                47              白色

顯示方式           意義
-------------------------
0                終端默認設置
1                高亮顯示
4                使用下劃線
5                閃爍
7                反白顯示
8                不可見

例子:
\033[1;31;40m    <!--1-高亮顯示 31-前景色紅色  40-背景色黑色-->
\033[0m          <!--采用終端默認設置,即取消顏色設置-->

下面演示一下輸出結果帶顏色的例子:

 1 name = input(name:)
 2 age = int(input(age:))
 3 
 4 info = ‘‘‘
 5 ------------- Info --------------
 6 Name:\033[31;1m%s\033[0m  #輸出結果為紅色
 7 age:\033[32;1m%s\033[0m  #輸出結果為綠色
 8 ------------- Over --------------
 9 ‘‘‘%(name,age)
10 print(info)

輸出結果:

技術分享

第三種格式化輸出方式

在字符串中插入形參(形參用大括號標記{形參}),最後在結尾給形參賦值。

 1 name = input(name:)
 2 age = int(input(age:))
 3 
 4 info = ‘‘‘
 5 ------------- Info --------------
 6 Name:{_name}
 7 age:{_age}
 8 ------------- Over --------------
 9 ‘‘‘.format(_name=name,_age=age)
10 print(info)

輸出結果:

技術分享

第四種格式化輸出方式

形參用數字表示,在結尾直接按照順序給形參賦值。

 1 name = input(name:)
 2 age = int(input(age:))
 3 
 4 info = ‘‘‘
 5 ------------- Info --------------
 6 Name:{0}
 7 age:{1}
 8 ------------- Over --------------
 9 ‘‘‘.format(name,age)
10 print(info)

輸出結果:

技術分享

Python學習之路 - 基礎入門