1. 程式人生 > >Python學習之路【第一篇】-Python簡介和基礎入門

Python學習之路【第一篇】-Python簡介和基礎入門

1.Python簡介                   

1.1 Python是什麼

      相信混跡IT界的很多朋友都知道,Python是近年來最火的一個熱點,沒有之一。從性質上來講它和我們熟知的C、java、php等沒有什麼本質的區別,也是一種開發語言,而且已經進階到主流的二十多種開發語言的top 5(資料來源自最新的TIOBE排行榜)。

       來頭不小啊!二十多種主流的開發語言,我該從哪一個開始呢?人生苦短,let‘s python! 

1.2 Python的由來和發展趨勢

      Python的前世源自鼻祖“龜叔”。1989年,吉多·範羅蘇姆(Guido van Rossum)在阿姆斯特丹為了打發無聊的聖誕節,決心開發一個新的指令碼解釋程式,自此Python和創始人“龜叔”開始進入公眾視野。他希望這個新的叫做Python的語言,能符合他的理想:創造一種C和shell之間,功能全面,易學易用,可拓展的語言。

      1991年,第一個Python編譯器誕生。它基於C語言實現,並能夠呼叫C語言的庫檔案。後面歷經版本的不斷換代革新,Python走到了非常具有里程碑意義的一個節點,即2004的2.4版本誕生了目前最流行的WEB框架Django!六年後Python發展到2.7版本,這是目前為止2.x版本中最新且較為廣泛使用版本。

2.7版本的誕生不同於以往2.x版本的垂直換代邏輯,它是2.x版本和3.x版本之間過渡的一個橋樑,以便最大程度上繼承3.x版本的新特性,同時儘量保持對2.x的相容性。

      因此3.x版本在2.7版本之前就已經問世,從2008年的3.0版本開始,python3.x系呈迅猛發展之勢,版本更新活躍,一直髮展到現在最新的3.5.2版本。3.5版本也是目前3.x系列中主流且廣泛使用的版本,後續相關程式的demo,預設均基於3.5版本展開。

1.3 Python 2 VS Python 3

      許多初學者會糾結於從2.x版本還是3.x版本開始python學習之路。這裡簡要對比下個人學習瞭解到的兩者的差異:

              3.x版本中 PRINT IS A FUNCTION,使用起來更簡單方便;

              3.x版本中預設使用unicode編碼,媽媽再也不用擔心你的程式編碼問題了;

              3.x版本中某些庫進行了改名,具體還有待在後續學習中深入展開;

              目前3.x版本還不能完全支援Twisted module,這恐怕是3.x版本中最大的遺憾。也不要過於糾結這點,據說官方正在彌補這個不足,同時也相信能有辦法解決的:)

      In summary : Python 2.x is legacy, Python 3.x is the present and future of the language. 長江後浪推前浪,python的未來是屬於3.x系列的,官方宣佈2020年之後不再支援2.x系列中最nb的2.7版本,2.x版本將逐漸壽終正寢,最終被銘刻在開發語言的豐碑上。

      所以學習3.x版本沒錯的!

1.4 Python的優缺點

      二十多種主流開發語言,python何以能在20多年間以如此迅猛之勢橫掃七大洲八大洋呢?這都是它自身優良的特性決定的.

      Python優點:

1.“優雅”、“明確”、“簡單”

      這是python的定位,使得python程式看上去簡單易懂,初學者容易入門,學習成本更低。但隨著學習的不但深入,python一樣可以滿足勝任複雜場景的開發需求。引用一個說法,Python的哲學是就是簡單優雅,儘量寫容易看明白的程式碼,儘量寫少的程式碼。

2.  開發效率高

     python作為一種高階語言,具有豐富的第三方庫,官方庫中也有相應的功能模組支援,覆蓋了網路、檔案、GUI、資料庫、文字等大量內容。因此開發者無需事必躬親,遇到主流的功能需求時可以直接呼叫,在基礎庫的基礎上施展拳腳,可以節省你很多功力和時間成本,大大降低開發週期。

3.  無需關注底層細節

     Python作為一種高階開發語言,在程式設計時無需關注底層細節(如記憶體管理等)。

4.  功能強大

     Python是一種前端後端通吃的綜合性語言,功能強大,php能勝任的角色它都能做,至於後端如何勝任,需要在後續學習中逐步領悟。

5.  可移植性

     Python可以在多種主流的平臺上執行,開發程式時只要繞開對系統平臺的依賴性,則可以在無需修改的前提下執行在多種系統平臺上,具體有待後續學習中深入展開。其他優點有待繼續發掘。

     一個硬幣總有兩面,那麼Python有缺點嗎?答案是肯定的,總結如下:

      Python缺點:

1. 程式碼執行速度慢

    因為Python是一種高階開發語言,不像c語言一樣可以深入底層硬體最大程度上挖掘榨取硬體的效能,因此它的執行速度要遠遠慢於c語言。另外一個原因是,Python是解釋型語言,你的程式碼在執行時會一行一行地翻譯成CPU能理解的機器碼,這個翻譯過程非常耗時,所以很慢。而C程式是執行前直接編譯成CPU能執行的機器碼,所以非常快。

    但需要注意的是,這種慢對於不需要追求硬體高效能的應用場合來講根本不是問題,因為它們比較的數量級根本不是使用者能直觀感受到的!想想程式執行所需的時間數量級?例如開發一個下載MP3的網路應用程式,C程式的執行時間需要0.001秒,而Python程式的執行時間需要0.1秒,慢了100倍,但由於網路更慢,需要等待1秒,使用者體驗幾乎沒有差別,除非你用非常精確的計時器來計時。

2.  釋出程式時必須公開原始碼

     什麼?有沒有搞錯?是的,釋出程式時我們必須公開原始碼!還是因為Python是一種解釋性語言,沒有編譯打包的過程(據說最新的python可以打包,但本質上還是把源代碼和直譯器打在一起,沒有太大實際意義)。想想我們的shell指令碼是不是也是這個情況,你能在不釋出原始碼的情況下發佈一個黑盒子程式來讓別人正常使用麼?

     這個缺點僅限於你想單純靠賣開發出來的軟體產品掙錢的時候。但在這個開發互聯的時代,不靠賣產品本身來賺錢的商業模式越來越主流了,所以問題也不是沒法解決。

     總結起來,Python的優點多於缺點,而且缺點在多數它能勝任的情況下不是根本性問題,瑕不掩瑜,盡情享受它給我們帶來的樂趣和便利吧!

1.5 Python的適用領域

     Python典型的適用領域如下:

1. 雲端計算開發

    雲端計算領域最火的語言,典型代表openstack。

2. web開發

    眾多優秀的web框架,眾多優秀的大型web站點(Youtube,instagrm,豆瓣等)均基於python開發。

3. 系統運維

    各種自動化工具的開發,CMDB、監控告警系統、堡壘機、配置管理&批量分發工具等均可以搞定。這是自己需要重點學習的領域。

4. 科學計算、人工智慧

    據網上了解用於圍棋大戰的谷歌阿發狗就使用了python開發(但估計只是部分而已)。

5. 圖形GUI處理

    暫時沒多少體會,後續領悟吧。

6. 網路爬蟲

    不知道給網路爬蟲單獨歸類是否合適,姑且這樣吧。這年頭網路爬蟲無處不在,很多都是基於python開發,包括谷歌的爬蟲。估計這是爬蟲工程師的必備工具吧。

1.6 哪些地方在用Python

      來幾個鮮活的知名公司應用案例,以示敬意:

      谷歌:Google app engine、google earth、爬蟲、廣告等

      Youtube: 世界最大的線上視訊網站基於python開發,好強大

      Instagram:美國最大的圖片分享網站,全部基於python開發

      facebook:大量的基礎庫基於python開發

      Redhat:yum包管理工具基於python開發

      國內知名網際網路公司的應用:豆瓣、知乎的網站,還有很多主流的網際網路公司(阿里、騰訊、百度、金山、搜狐、盛大、網易、新浪、網易、果殼、土豆等)通過python來完成各種任務。

2.Python基礎                   

2.1 程式設計開發規範

     作為一門開發語言,python自然也有自己的程式設計規範,以下是特有且必須遵循的規範:

1. 程式碼開頭

    python中程式碼必須頂格編寫,除非被作為語句巢狀在條件判斷或條件迴圈中。

2. 程式碼層級

    程式碼與程式碼之間的邏輯層級關係(涉及邏輯判斷、包含關係等情況)通過空格來界定,第一層頂格編寫,第二層(被包含或者邏輯判斷後的執行動作)開頭預留4個空格(如果不考慮跨平臺可以使用tab)

3. 對齊方式

    同一個層級的程式碼必須嚴格對齊,如第一層都是頂格,第二層都是4個空格開頭,第三層則是8個空格,以此類推。

4. 註釋

    單行註釋用#開頭,單獨一行作為註釋或者在程式碼後面通過#跟上註釋均可,多行註釋在首尾處用成對的三引號引用即可,可以是成對的三個單引號或者三個雙引號。

5. 程式碼塊

    目前來看if邏輯判斷和for迴圈條件後面均以冒號結尾,然後通過4個空格開始下一層級的實際執行動作語句編寫。這部分在冒號後面接上的語句稱為程式碼塊。

6. 程式命名

    編寫的python程式必須以.py結尾。

7. 專案規範

    啟動一個專案開發時先在開發工具中建立project,然後根據需要建立目錄,最後在目錄下建立當前活動的py程式。

2.2 變數

  python中的變數也用於儲存臨時值以便後續靈活呼叫,在定義時只能使用字母、數字、下劃線的任意組合,且不能以數字開頭,不能以python內建的關鍵字來命名變數(如and,import,global,finally等,有待後續學習加深印象)。對變數進行字串型別的賦值時,字串需要用成對的引號引起來,可以是單引號、雙引號或者三引號。

    建議通過以下兩種形式來定義較為複雜的變數,便於閱讀:

1. 駝峰體

    即每個單詞的首字母大寫,其他小寫,如MappingTable

2. 下劃線

    不同單詞之間通過下劃線分開,如mappting_table

2.3 字元編碼

  字元編碼經歷了ASCII碼->unicode->UTF-8的演變過程,python 2.x預設使用ASCII編碼,而3.x預設使用UTF-8編碼。由於字元編碼事關重大,一言不合就會導致亂碼,因此強烈建議統一使用萬用的utf-8編碼。怎麼使用呢?

    1. 程式開頭明確顯式定義

12#!/usr/bin/env python# -*- coding: utf-8 -*-  

        windows下程式設計可忽略第一行,但為了保留移植性建議始終宣告變數。

    2. 在程式直譯器中選擇utf-8字元編碼

    以上兩個條件缺一不可,雖然python 3.x版本預設使用utf-8編碼,但還是建議在程式中宣告編碼格式。

    以上是結果,下面談談為什麼強烈建議使用urf-8編碼,以及為什麼utf-8編碼就可以通吃。

    眾所周知計算機是美國人發明的,因此最早就只有包括所有字母的大小寫、數字、必要的特殊符號等合計才127個字元被編碼到計算機裡,這個編碼就是ASCII編碼。由於需要進行編碼的字元才有127個,因此用7個二進位制位就足以搞定了,但8個二進位制位才能構成一個完整的位元組,因此索性用8個二進位制位來進行編碼,剩餘的一位只好浪費掉。所以ASCCI碼只佔用一個字元。

    隨著計算機技術的推廣和普及,其他不以英語為官方語言的國家也開始使用計算機了。那麼現在問題來了,一個位元組的8個bit位只能表示非常有限的字元(設計時只包括所有字母的大小寫、數字、必要的特殊符號,其中整數還不能超過255),既有的ASCII編碼表裡沒有包含其他國家的語言字元,但顯然也沒法強迫全球都使用英語,於是各個國家開始進行本土化改良,設計能滿足自己國家需要的編碼,如國內的GB2312。這裡的改良涉及兩個要點,一是原有的一個位元組的編碼空間要擴充為兩個位元組甚至更多,二是新的編碼還不能與既有的ASCII編碼衝突,否則老美要跟你捉急了!你可以想象,中國搞定了一套,日本也搞定了一套,接著是韓國、越南等巴拉巴拉,大家都有自己的編碼標準,各自為政,遇到多語言混合使用的場景這編碼表還不炸開鍋,連同計算機一起傻掉!這時Unicode應運而生。Unicode把所有語言都統一到一套編碼裡,用兩個甚至更多的位元組來進行編碼(通常用兩個位元組,搞不定時再喊人加砝碼呀),這樣就不會再有亂碼問題了。

    Unicode搞定了多國語言亂碼和編碼統一的問題,但你會發現如果需要處理的內容全部是英文的話,用Unicode編碼比ASCII編碼需要多一倍的儲存空間,在儲存和傳輸上就不太經濟划算。OK,Unicode的演進改良版utf-8就是來解決這個問題的。utf-8的優勢在於它使用“可變長編碼”,在繼續沿用ASCII編碼基礎上來對1個位元組不能搞定的那些語言字元進行編碼設計,這樣英文還是用1個位元組,遇到中文就用3個或者更多的位元組來處理。這樣既可以保障空間和效能的最大化,還能兼顧老美的老巢和其他非英文的編碼相容問題,一舉三得!所以你會發現ASCII其實是utf-8的子集,utf-8向下相容。

2.4 Python直譯器

  python是一門解釋性語言,自然不能缺瞭解釋器(類似於JVM)。官方支援Cpython、Jpython、Ironpython和pypy等,預設使用基於C語言實現的Cpython。它也是最為廣泛使用的直譯器。程式執行時會把.py檔案轉換成.pyc位元組碼檔案,然後執行在python虛擬機器上。

2.5 構建Python的開發環境

  構建好包括直譯器(虛擬機器)和開發工具IDE在內的Python的開發環境才便於展開程式開發之旅。

    其中直譯器(虛擬機器)從python官方下載安裝即可,需要注意的是建議安裝3.5版本,windows下安裝後需要把python的bin目錄和scripts目錄追加到系統環境變數path和使用者變數path中。我的win 7使用者不是以administor,補充追加了使用者變數後才能在cmd下傻瓜式地輸入python。linux下系統預設是2.x的版本,安裝3.5版本時需要先將舊版本重新命名為其他目錄(如python2.6)後再安裝,安裝完畢無需額外設定環境變數。

    好的程式猿都得有自己好使的IDE,python程式建議使用pycharm工具來進行開發。從官網下載安裝社群版即可,需要注意的是選擇後本地的直譯器和專案的預設字元編碼。其他一些好玩的特性、快捷鍵等只有後續逐步體會了。

2.6 模組初識

  python內建了很多模組,同時也可以自定義編寫一些好玩的模組,使用模組時需要通過關鍵字import匯入。匯入後python會從系統變數的路徑中從前往後一次查詢,首次成功查詢匹配後不再進行後續查詢。因此如果需要使用自定義模組,需要特別關注自定義模組的存放位置,底線是隻存放在系統變數的一個路徑下,否則可能得到意外的結果。

    系統變數的路徑可通過以下方式檢視:

    

   以上是windows下3.5版本的輸出結果,linux平臺或者其他版本的輸出有所差別,以實際為準。

2.7 使用者輸入和格式化輸出

    使用者輸入通過input來實現,示例如下:

     YourName=input("Please input you name here: ") 

     簡單的輸出通過print來實現,示例如下:

     print("Hi,", YourName)  #呼叫輸出上面使用者輸入的變數YourName

     注意:

     1.  3.x版本中input預設接收使用者輸入的型別為字串,如果需要使用其他的資料型別則需要進行轉換,如 UserAge=int(input("Please input your name:"))

     2.  print輸出中可以接上轉義符號\來實現更多的輸出顯示效果,如 \n表示換行,\t為製表符。

     print的使用進階——字串的格式化輸出:

     python中,對字串進行格式化輸出與c語言是相同的,即藉助%來實現。%s表示與字串替換,%d表示用整數替換,%f表示用浮點數替換,如果輸出的字串中本身就需要%(比如輸出比率),則需要用連續的兩個%%來輸出%。

     示例程式如下:

12345#!/usr/bin/env python#-*- coding:utf-8 -*-print ("Your name is %s" %"Bob")print ("Your age is %d" %21)print 

相關推薦

Python學習第一:Python簡介入門

Python簡介 一、什麼是Python Python 是一個高層次的結合瞭解釋性、編譯性、互動性和麵向物件的指令碼語言。 Python 的設計具有很強的可讀性,相比其他語言經常使用英文關鍵字,其他語言的一些標點符號,它具有比其他語言更有特色語法結構。 Python 是一種解釋型語言:原始碼不是

Python學習第一-Python簡介基礎入門

1.Python簡介                   1.1 Python是什麼      相信混跡IT界的很多朋友都知道,Python是近年來最火的一個熱點,沒有之一。從性質上來講它和我們熟知的C、java、php等沒有什麼本質的區別,也是一種開發語言,而且已經進階到主

Python自學第一Python簡介入門

youtube 通用 too 互聯網公司 python腳本 bar strong 重裝 排行 Python前世今生 python的創始人為吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·範羅蘇姆為了在阿姆斯特丹打發時間,決心開發一個新的腳本

Python第一:Python簡介入門

源碼 world 網絡服務 換行 編程風格 大小寫 utf8 編譯安裝 比較 python簡介: 一、什麽是python Python(英國發音:/ pa θ n/ 美國發音:/ pa θɑ n/),是一種面向對象、直譯式的計算機程序語言。 每一門語言都有自己的哲學: py

pyhton第一python變數if語句

一.初識python 1.第一句python     -字尾名是可以任意?     -匯入模組     ==>以後檔案字尾名.py #!/usr/bin/env python # -*- coding:utf8 -*- pri

Python第一:使用miniconda安裝python多版本

ase alias linux 1.10 ade ror another 離開 cer 一、簡介 Anaconda是一個發行包,裏面集成打包了很多的軟件包,使用conda包管理器來安裝軟件,比較方便,但是Anaconda軟件包太大,個人不太喜歡,想自己定制。Minicond

Python第一Python簡介入門

readline def 美團 sys eric gcc 下劃線 博客 height Python簡介 Python前世今生 python的創始人為吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·範羅蘇姆為了在阿姆斯特丹打發時間,決心開發

python全棧開發第一Python簡介以及入門

request lambda sci linu ogl red 控制 ttl 排行 一、python介紹   python的創始人為吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,Guido開始寫Python語言的編譯器。Python這個名字,來

Python第二計算機組成

時鐘頻率 space font 存儲 bit 硬件組成 第二篇 時鐘 速度慢 硬件組成:輸入單元、輸出單元、中央處理單元、存儲單元 南橋:I/O操作 北橋:CPU操作 0/1的單位稱為bit(位) bit是計算機中能識別的最小單位。 字節是計算機中最小的存儲單位。 8b

21000+行原生J S的學習第一

原生js的學習之路學習JS已經有一年多了(小白),看了很多書,也寫了不少代碼,但是總感覺功力還是不夠(哈哈),前段時間偶然接觸到原生JS代碼,邊對此產生了興趣,學習原生JS對於我們深入了解js有很好的幫助比如函數的參數類型、返回值類型等。下來先介紹一下原生JS的語法結構,來幫助大家更好的學習和閱讀原生JS:d

第一ASP.NET MVC快速入門數據庫操作(MVC5+EF6)

c項目 教程 建數據庫 因此 F5 ctr 文件頭部 lec 跨站請求偽造 目錄 【第一篇】ASP.NET MVC快速入門之數據庫操作(MVC5+EF6) 【第二篇】ASP.NET MVC快速入門之數據註解(MVC5+EF6) 【第三篇】ASP.NET MVC快速入門之安全

Python 全棧開發第一:目錄

文件 inux celery 函數編程 www 復用 web linux系統 ado Python 全棧開發【第0篇】:目錄 第一階段:Python 開發入門 Python 全棧開發【第一篇】:計算機原理&Linux系統入門 Python 全棧開發【第二

7年iOS開發,自述通往架構師的修煉精華

高效 現在 架構圖 好書 之一 規劃學習 設計架構 替代 在哪裏 前言: 本篇文章僅供大家參考學習以及在成為架構師的道路上應該掌握的知識點和經驗。相信你在看完這篇文章後,你有一個明確的目標以及一個通往架構師路上正確的方向。 導讀: 1、架構師應不應該寫代碼 2、為什麽別人的

143.Python修煉148-前端-移動端庫框架-BootStrap2018.08.04

bootstrap 簡單、直觀、強悍的前端開發框架,讓web開發更迅速、簡單。 來自Twitter,是目前很受歡迎的前端框架之一。 Bootrstrap是基於HTML、CSS、JavaScript的,讓書寫程式碼更容易。 移動優先,響應式佈局開發。 bootstrap中文網址:http://

142.Python修煉147-前端-移動端庫框架-swiper2018.08.04

swiper swiper.js是一款成熟穩定的應用於PC端和移動端的滑動效果外掛,一般用來觸屏焦點圖、觸屏整屏滾動等效果。 swiper分為2.x版本和3.x版本,2.x版本支援低版本瀏覽器(IE7),3.x放棄支援低版本瀏覽器,適合應用在移動端。 2.x版本中文網址:http://2.s

第一ASP.NET MVC快速入門資料庫操作(MVC5+EF6)

目錄 新建專案 開啟VS2015,找到選單項[檔案->新建->專案],打開向導對話方塊: 注意我們的選擇項: 1.執行平臺:.NET FrameWork 4.5 2.專案模板:ASP.NET Web Application (.NET Framew

Python學習——第二彈(認識python

內容 代碼結構 計算 戰術 個人 方法 十分 現在 目的   第一彈中我是說明了學習python的目的,主要為了自我提升的考慮,那麽為什麽我對python感興趣,python有什麽用了?本章就簡單說明下。   python的用途很廣,而且代碼十分簡潔,不像java、c等其他

python全棧開發第二Python數據類型

轉換 bin tar pytho function mat 運行 light 開頭 數字類型和字符串類型 1.bin()函數將十進制轉換成而進制 2.oct()函數將十進制轉換成八進制 3.hex()函數將十進制轉換成十六進制     十六進制表示:0-9

python學習——第三彈 (作業第一題)

image 操作 啟動程序 代碼 color 鎖定文件 文件 文件內容 數據 作業一:編寫登錄接口1.輸入用戶名密碼2.認證成功後顯示歡迎信息3.輸錯三次後鎖定。 所需知識點 文件基本讀寫操作,循環,列表,字典 上面的作業題是在學習完數據類型和簡單的文件操作之後布置的,

Python成長第五Python基礎文件處理

閱讀 關註 src 文件路徑 程序 opened IT 寫入 文件操作 一、文件操作 1、介紹 計算機系統分為:計算機硬件,操作系統,應用程序三部分。 我們用python或其他語言編寫的應用程序若想要把數據永久保存下來,必須要保存於硬盤中,這就涉及到應用程序要操作硬件,