Python之路【第一篇】:介紹、基本語法、流程控制

1、python 簡介

python 特色

Python是一種計算機程序設計語言。你可能已經據說過不少種流行的編程語言,好比很是難學的C語言,很是流行的Java語言,適合初學者的Basic語言,適合網頁編程的JavaScript語言等等。html

那Python是一種什麼語言?java

首先,咱們普及一下編程語言的基礎知識。用任何編程語言來開發程序,都是爲了讓計算機幹活,好比下載一個MP3,編寫一個文檔等等,而計算機幹活的CPU只認識機器指令,因此,儘管不一樣的編程語言差別極大,最後都得「翻譯」成CPU能夠執行的機器指令。而不一樣的編程語言,幹同一個活,編寫的代碼量,差距也很大。python

好比,完成同一個任務,C語言要寫1000行代碼,Java只須要寫100行,而Python可能只要20行。linux

因此Python是一種至關高級的語言。c++

你也許會問,代碼少還很差?代碼少的代價是運行速度慢,C程序運行1秒鐘,Java程序可能須要2秒,而Python程序可能就須要10秒。程序員

那是否是越低級的程序越難學,越高級的程序越簡單?表面上來講,是的,可是,在很是高的抽象計算中,高級的Python程序設計也是很是難學的,因此,高級程序語言不等於簡單。算法

可是,對於初學者和完成普通任務,Python語言是很是簡單易用的。連Google都在大規模使用Python,你就不用擔憂學了會沒用。數據庫

用Python能夠作什麼?能夠作平常任務,好比自動備份你的MP3;能夠作網站,不少著名的網站包括YouTube就是Python寫的;能夠作網絡遊戲的後臺,不少在線遊戲的後臺都是Python開發的。總之就是能幹不少不少事啦。編程

Python固然也有不能幹的事情,好比寫操做系統,這個只能用C語言寫;寫手機應用,只能用Swift/Objective-C(針對iPhone)和Java(針對Android);寫3D遊戲,最好用C或C++。windows

python前世此生

Python是著名的「龜叔」Guido van Rossum在1989年聖誕節期間,爲了打發無聊的聖誕節而編寫的一個編程語言。

龜叔給Python的定位是「優雅」、「明確」、「簡單」,因此Python程序看上去老是簡單易懂,初學者學Python,不但入門容易,並且未來深刻下去,能夠編寫那些很是很是複雜的程序。

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

                                    編程語言排行榜TOP20榜單-2017年1月

     

  • 總的來講,這幾種編程語言各有千秋。C語言是能夠用來編寫操做系統的貼近硬件的語言,因此,C語言適合開發那些追求運行速度、充分發揮硬件性能的程序。而Python是用來編寫應用程序的高級編程語言。
  • 當你用一種語言開始做真正的軟件開發時,你除了編寫代碼外,還須要不少基本的已經寫好的現成的東西,來幫助你加快開發進度。好比說,要編寫一個電子郵件客戶端,若是先從最底層開始編寫網絡協議相關的代碼,那估計一年半載也開發不出來。高級編程語言一般都會提供一個比較完善的基礎代碼庫,讓你能直接調用,好比,針對電子郵件協議的SMTP庫,針對桌面環境的GUI庫,在這些已有的代碼庫的基礎上開發,一個電子郵件客戶端幾天就能開發出來。
  • Python就爲咱們提供了很是完善的基礎代碼庫,覆蓋了網絡、文件、GUI、數據庫、文本等大量內容,被形象地稱做「內置電池(batteries included)」。用Python開發,許多功能沒必要從零編寫,直接使用現成的便可。
  • 除了內置的庫外,Python還有大量的第三方庫,也就是別人開發的,供你直接使用的東西。固然,若是你開發的代碼經過很好的封裝,也能夠做爲第三方庫給別人使用。
  • Python能夠應用於衆多領域,如:數據分析、組件集成、網絡服務、圖像處理、數值計算和科學計算等衆多領域,首選是網絡應用,包括網站、後臺服務,數據分析等等;
  • 目前業內幾乎全部大中型互聯網企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等,甚至NASA(美國航空航天局)都大量地使用Python。互聯網公司普遍使用Python來作的事通常有:自動化運維自動化測試大數據分析、爬蟲、Web 等。

:上述重點字體表示該公司主要使用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與其餘高級語言對比

  • C 和 Python、Java、C#等

       C語言: 代碼編譯獲得 機器碼 ,機器碼在處理器上直接執行,每一條指令控制CPU工做

     其餘語言: 代碼編譯獲得 字節碼 ,虛擬機執行字節碼並轉換成機器碼再後在處理器上執行

  • Python 和 C  Python這門語言是由C開發而來

    對於使用:Python的類庫齊全而且使用簡潔,若是要實現一樣的功能,Python 10行代碼能夠解決,C可能就須要100行甚至更多.
    對於速度:Python的運行速度相較與C,絕逼是慢了

  • Python 和 Java、C#等

    對於使用:Linux原裝Python,其餘語言沒有;以上幾門語言都有很是豐富的類庫支持
    對於速度:Python在速度上可能稍顯遜色

  因此,Python和其餘語言沒有什麼本質區別,其餘區別在於:擅長某領域、人才豐富、先入爲主。

python 優缺點

優勢:

  • 做爲初學python的科班出身的小白,python很是簡單,很是適合人類閱讀。閱讀一個良好的Python程序就感受像是在讀英語同樣,儘管這個英語的要求很是嚴格!Python的這種僞代碼本質是它最大的優勢之一。它使你可以專一於解決問題而不是去搞明白語言自己。
  • 易學。python雖然是用c語言寫的,可是它擯棄了c中很是複雜的指針,簡化了python的語法。
  • 可移植性————因爲它的開源本質。
  • Python既支持面向過程的函數編程也支持面向對象的抽象編程。在面向過程的語言中,程序是由過程或僅僅是可重用代碼的函數構建起來的。在面向對象的語言中,程序是由數據和功能組合而成的對象構建起來的。與其餘主要的語言如C++和Java相比,Python以一種很是強大又簡單的方式實現面向對象編程。
  • 可擴展性和可嵌入性。若是你須要你的一段關鍵代碼運行得更快或者但願某些算法不公開,你能夠把你的部分程序用C或C++編寫,而後在你的Python程序中使用它們。你能夠把Python嵌入你的C/C++程序,從而向你的程序用戶提供腳本功能。
  • 豐富的庫。Python標準庫確實很龐大。
  • 規範的代碼。Python採用強制縮進的方式使得代碼具備極佳的可讀性。

不足之處(算不上缺點):

  • 運行速度,有速度要求的話,用C++改寫關鍵部分吧。不過對於用戶而言,機器上運行速度是能夠忽略的。由於用戶根本感受不出來這種速度的差別。
  • 既是優勢也是缺點,代碼不能加密,由於PYTHON是解釋性語言,它的源碼都是以名文形式存放的,不過我不認爲這算是一個缺點,若是你的項目要求源代碼必須是加密的,那你一開始就不該該用Python來去實現。
  • 線程不能利用多CPU問題,這是Python被人詬病最多的一個缺點,GIL即全局解釋器鎖(Global Interpreter Lock),是計算機程序設計語言解釋器用於同步線程的工具,使得任什麼時候刻僅有一個線程在執行,Python的線程是操做系統的原生線程。在Linux上爲pthread,在Windows上爲Win thread,徹底由操做系統調度線程的執行。一個python解釋器進程內有一條主線程,以及多條用戶程序的執行線程。即便在多核CPU平臺上,因爲GIL的存在,因此禁止多線程的並行執行。關於這個問題的折衷解決方法,咱們在之後線程和進程章節裏再進行詳細探討。

Python解釋器

  • Cpython
    當咱們從Python官方網站下載並安裝好Python 3.5後,咱們就直接得到了一個官方版本的解釋器:CPython。這個解釋器是用C語言開發的,因此叫CPython。在命令行下運行python就是啓動CPython解釋器。CPython是使用最廣的Python解釋器。
  • Ipython

    IPython是基於CPython之上的一個交互式解釋器,也就是說,IPython只是在交互方式上有所加強,可是執行Python代碼的功能和CPython是徹底同樣的。比如不少國產瀏覽器雖然外觀不一樣,但內核其實都是調用了IE。

    CPython用>>>做爲提示符,而IPython用In [序號]:做爲提示符。

  • Jyhton
        Jython是運行在Java平臺上的Python解釋器,能夠直接把Python代碼編譯成Java字節碼執行。
  • IronPython
       IronPython和Jython相似,只不過IronPython是運行在微軟.Net平臺上的Python解釋器,能夠直接把Python代碼編譯成.Net的字節碼。
  • PyPy(特殊)
        PyPy是另外一個Python解釋器,它的目標是執行速度。PyPy採用JIT技術,對Python代碼進行動態編譯(注意不是解釋),因此能夠顯著提升Python代碼的執行速度。

      絕大部分Python代碼均可以在PyPy下運行,可是PyPy和CPython有一些是不一樣的,這就致使相同的Python代碼在兩種解釋器下執行可能會有不一樣的結果。若是你的代碼要放到PyPy下執行,就須要瞭解PyPy和CPython的不一樣點

小結

  Python的解釋器不少,但使用最普遍的仍是CPython。若是要和Java或.Net平臺交互,最好的辦法不是用Jython或IronPython,而是經過網絡調用來交互,確保各程序之間的獨立性。

 

2、python 安裝

  • 由於Python是跨平臺的,它能夠運行在Windows、Mac和各類Linux/Unix系統上。在Windows上寫Python程序,放到Linux上也是可以運行的。
  • 目前,Python有兩個版本,一個是2.x版,一個是3.x版,這兩個版本是不兼容的。因爲3.x版愈來愈普及,建議電腦上安裝的Python版本是最新的3.5.x或升級本身本地的python版本爲3.5.x版本。

 windows:

一、下載安裝包
    https://www.python.org/downloads/
二、安裝
    默認安裝路徑:C:\python35
三、配置環境變量
    【右鍵計算機】--》【屬性】--》【高級系統設置】--》【高級】--》【環境變量】--》【在第二個內容框中找到 變量名爲Path 的一行,雙擊】 --> 【Python安裝目錄追加到變值值中,用 ; 分割】
    如:原來的值;C:\python35,切記前面有分號

首先,根據你的Windows版本(64位仍是32位)從Python的官方網站下載Python 3.5對應的64位安裝程序32位安裝程序(網速慢的同窗請移步國內鏡像),而後,運行下載的EXE安裝包:

特別要注意勾上Add Python 3.5 to PATH,而後點「Install Now」便可完成安裝。

驗證:

安裝成功後,打開命令提示符窗口,敲入python後,會出現兩種狀況:

狀況一:

看到上面的畫面,就說明Python安裝成功!

你看到提示符>>>就表示咱們已經在Python交互式環境中了,能夠輸入任何Python代碼,回車後會馬上獲得執行結果。如今,輸入exit()並回車,就能夠退出Python交互式環境(直接關掉命令行窗口也能夠)。

狀況二: 獲得一個錯誤

'python' 不是內部或外部命令,也不是可運行的程序或批處理文件。

這是由於Windows會根據一個Path的環境變量設定的路徑去查找python.exe,若是沒找到,就會報錯。若是在安裝時漏掉了勾選Add Python 3.5 to PATH,那就要手動把python.exe所在的路徑添加到Path中。

若是你不知道怎麼修改環境變量,建議把Python安裝程序從新運行一遍,務必記得勾上Add Python 3.5 to PATH

Linux:

無需安裝,原裝Python環境,默認2.6版本
PS:若是自帶2.6版本,請更新至3.5版本

 升級python2.x至python 3.5.x

 Windows升級:

卸載重裝便可

Linux升級:

Linux的yum依賴自帶Python,爲防止錯誤,此處更新其實就是再安裝一個Python,建議在python官網下載源碼包進行編譯安裝。

查看默認Python版本
[root@shuke data]# python -V

升級步驟:

一、安裝gcc,用於編譯Python源碼
    yum install gcc
二、下載源碼包,https://www.python.org/ftp/python/
三、解壓並進入源碼文件
四、編譯安裝
    ./configure
    make all
    make install
五、查看版本
    /usr/local/bin/python3.5 -V
六、修改默認Python版本
    mv /usr/bin/python /usr/bin/python2.6
    ln -s /usr/local/bin/python3.5 /usr/bin/python
七、防止yum執行異常,修改yum使用的Python版本
    vi /usr/bin/yum
    將頭部 #!/usr/bin/python 修改成 #!/usr/bin/python2.6

八、升級完成後,驗證版本

[root@shuke day01]# python -V
Python 3.5.2                      # 升級後的python版本爲3.5.2

 pycharm的使用

  一、使用:

    a、建立項目:file ---> new project

    b、新建文件夾:右擊要建立文件夾的項目或上級目錄 ----〉new ---〉directory 

    c、新建文件:右擊要建立文件夾的項目或上級目錄 ----〉new ---〉file

    d、運行文件:要執行的.py文件內容---〉右擊---〉run xx.py

   二、文件編碼:

    file ---->default settings --->editor --->file encodings

   三、程序文件模版:

    file ---->default settings --->editor --->file and code templates 

   四、改變字體大小:

    file ----〉settings ----〉editor ---> General ---〉mouse

  ps.pycharm的更多應用請訪問:

    http://www.cnblogs.com/wangshuyang/articles/5846563.html

3、python入門

腳本式編程

在linux 下建立一個文件名稱爲hello.py,並輸入

print("Hello World!")

而後終端執行命令:python hello.py 

[root@shuke day01]# cat hello.py 
 print("Hello World!")
[root@shuke day01]# python hello.py 
 Hello World!

執行 python hello.py 時,明確的指出 hello.py 腳本由 python 解釋器來執行。

  • 指定解釋器

在Linux/Unix系統中,你能夠在腳本頂部添加如下命令讓Python腳本能夠像SHELL腳本同樣可直接執行: 

#!/usr/bin/env python			# 生命頭部,指定解釋器
#_*_coding:utf-8_*_			# 指定字符編碼,python3.x默認爲utf-8

print("Hello World!")

執行前將py腳本文件賦予執行權限:

[root@shuke day01]# chmod +x hello.py         # 添加執行權限
[root@shuke day01]# ll hello.py 
-rwxr-xr-x 1 root root 45 Apr 27 16:49 hello.py
[root@shuke day01]# ./hello.py                 # 直接運行腳本文件
Hello World!

交互式編程

咱們能夠在命令提示符中輸入"Python"命令來啓動Python解釋器:

[root@shuke day01]# python                                                   # 進入交互模式
Python 3.5.2 (default, Apr 27 2017, 11:27:01)                   # python版本信息
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print ("Hello, Python!");          # 輸入
Hello, Python!                   # 輸出
>>> flag = True
>>> if flag :                               # 當鍵入一個多行結構時,續行是必須的。咱們能夠看下以下 if 語句:
...     print("flag 條件爲 True!")
...                         # 需再次輸入回車
flag 條件爲 True!                # 輸出
>>>

 

4、字符編碼

python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(在python2.x版本中默認爲ascill,在python3.x版本中默認字符編碼爲:unicode)

ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其餘西歐語言,其最多隻能用 8 位來表示(一個字節),即:2**8 = 256-1,因此,ASCII碼最多隻能表示 255 個符號。

------關於中文------

爲了處理漢字,程序員設計了用於簡體中文的GB2312和用於繁體中文的big5。

GB2312(1980年)一共收錄了7445個字符,包括6763個漢字和682個其它符號。漢字區的內碼範圍高字節從B0-F7,低字節從A1-FE,佔用的碼位是72*94=6768。其中有5個空位是D7FA-D7FE。

GB2312 支持的漢字太少。1995年的漢字擴展規範GBK1.0收錄了21886個符號,它分爲漢字區和圖形符號區。漢字區包括21003個字符。2000年的 GB18030是取代GBK1.0的正式國家標準。該標準收錄了27484個漢字,同時還收錄了藏文、蒙文、維吾爾文等主要的少數民族文字。如今的PC平臺必須支持GB18030,對嵌入式產品暫不做要求。因此手機、MP3通常只支持GB2312。

從ASCII、GB23十二、GBK 到GB18030,這些編碼方法是向下兼容的,即同一個字符在這些方案中老是有相同的編碼,後面的標準支持更多的字符。在這些編碼中,英文和中文能夠統一地處理。區分中文編碼的方法是高字節的最高位不爲0。按照程序員的稱呼,GB23十二、GBK到GB18030都屬於雙字節字符集 (DBCS)。

有的中文Windows的缺省內碼仍是GBK,能夠經過GB18030升級包升級到GB18030。不過GB18030相對GBK增長的字符,普通人是很難用到的,一般咱們仍是用GBK指代中文Windows內碼。

顯然ASCII碼沒法將世界上的各類文字和符號所有表示,因此,就須要新出一種能夠表明全部字符和符號的編碼,即:Unicode

Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。Unicode 是爲了解決傳統的字符編碼方案的侷限而產生的,它爲每種語言中的每一個字符設定了統一而且惟一的二進制編碼,規定全部的字符和符號最少由 16 位來表示(2個字節),即:2 **16 = 65536,
注:此處說的的是最少2個字節,可能更多

UTF-8,是對Unicode編碼的壓縮和優化,他再也不使用最少使用2個字節,而是將全部的字符和符號進行分類:ascii碼中的內容用1個字節保存、歐洲的字符用2個字節保存,東亞的字符用3個字節保存...

因此,python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(在python2.x中默認ascill),在2.x版本運行內容包含中文的腳本時,會報錯:

報錯:ascii碼沒法表示中文

#!/usr/bin/env python
print "你好,世界"           # 顯示爲亂碼

改正:應該顯示的告訴python解釋器,用什麼編碼來執行源代碼,即:

#!/usr/bin/env python
# -*- coding: utf-8 -*-     # 指定使用utf-8編碼進行編碼
  
print "你好,世界"         # 顯示正常

在python3.x版本中因爲默認編碼是unicode,因爲unicode編碼兼容中文,因此能夠正常顯示中文!

 

5、註釋

確保對模塊, 函數, 方法和行內註釋使用正確的風格

Python中的註釋有單行註釋和多行註釋:

Python中單行註釋以#開頭,例如:

print("Hello, World!")      # 這是一個註釋

多行註釋用三個單引號(''')或者三個雙引號(""")將註釋括起來,例如:

一、單引號(''')

#!/usr/bin/python3 
'''
這是多行註釋,用三個單引號
這是多行註釋,用三個單引號 
這是多行註釋,用三個單引號
'''
print("Hello, World!") 

二、雙引號(''')

#!/usr/bin/python3 
"""
這是多行註釋,用三個單引號
這是多行註釋,用三個單引號 
這是多行註釋,用三個單引號
"""
print("Hello, World!") 

  

6、pyc文件是什麼鬼?

執行Python代碼時,若是導入了其餘的 .py 文件,那麼,執行過程當中會自動生成一個與其同名的 .pyc 文件,該文件就是Python解釋器編譯以後產生的字節碼。

PS: 代碼通過編譯能夠產生字節碼;字節碼經過反編譯也能夠獲得代碼。

簡述Python的運行過程

在說這個問題以前,咱們先來講兩個概念,PyCodeObject和pyc文件。

咱們在硬盤上看到的pyc天然沒必要多說,而其實PyCodeObject則是Python編譯器真正編譯成的結果。咱們先簡單知道就能夠了,繼續向下看。

當python程序運行時,編譯的結果則是保存在位於內存中的PyCodeObject中,當Python程序運行結束時,Python解釋器則將PyCodeObject寫回到pyc文件中。

當python程序第二次運行時,首先程序會在硬盤中尋找pyc文件,若是找到,則直接載入,不然就重複上面的過程。

因此咱們應該這樣來定位PyCodeObject和pyc文件,咱們說pyc文件實際上是PyCodeObject的一種持久化保存方式。

 

7、變量

  • "變量的聲明":  (Python 中的變量不須要聲明。每一個變量在使用前都必須賦值,變量賦值之後該變量纔會被建立。)
  • 在 Python 中,變量就是變量,它沒有類型,咱們所說的"類型"是變量所指的內存中對象的類型。
  • 等號(=)用來給變量賦值。

    等號(=)運算符左邊是一個變量名,等號(=)運算符右邊是存儲在變量中的值。

#!/usr/bin/env python
#_*_coding:utf-8_*_ name = "shuke"

上述代碼聲明瞭一個變量,變量名爲: name,變量name的值爲:"shukei" 

變量定義的規則:

  • 變量名只能是 字母、數字或下劃線的任意組合
  • 變量名的第一個字符不能是數字
  • 如下關鍵字不能聲明爲變量名
    ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

多個變量賦值

a = b = c = 1                      # 該實例,建立一個整型對象,值爲1,三個變量被分配到相同的內存空間上。
a, b, c = 1, 2, "runoob"               # 該實例,兩個整型對象 1 和 2 的分配給變量 a 和 b,字符串對象 "runoob" 分配給變量 c。

 

8、用戶輸入

#!/usr/bin/env python
#_*_coding:utf-8_*_
 
 
#name = raw_input("What is your name?")       #only on python 2.x
name = input("What is your name?")
print("Hello " + name )

輸入密碼時,若是想要不進行明文顯示,須要利用getpass 模塊中的 getpass方法,即:

注: getpass模塊須要在終端測試效果,在pycharm IDE中不能測試效果

 

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

pwd = getpass.getpass("請輸入密碼:")     # 將用戶輸入的內容賦值給 pwd 變量
print(pwd)                       # 打印輸入的內容 

 

9、數據類型

Python3 中有六個標準的數據類型:

  • Number(數字)
  • String(字符串)
  • List(列表)
  • Tuple(元組)
  • Sets(集合)
  • Dictionary(字典)

  1.  Number(數字)

  2 是一個整數的例子。
  長整數 不過是大一些的整數。
  3.23和52.3E-4是浮點數的例子。E標記表示10的冪。在這裏,52.3E-4表示52.3 * 10-4。
  (-5+4j)和(2.3-4.6j)是複數的例子

  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也不會致使嚴重後果了。
  float(浮點型)
    浮點數用來處理實數,即帶有小數的數字。相似於C語言中的double類型,佔8個字節(64位),其中52位表示底,11位表示指數,剩下的一位表示符號。
  complex(複數)
    複數由實數部分和虛數部分組成,通常形式爲x+yj,其中的x是複數的實數部分,y是複數的虛數部分,這裏的x和y都是實數。
注: Python中存在小數字池:-5 ~ 257
內置的 type() 函數能夠用來查詢變量所指的對象類型,type函數一樣適用於元組、列表、字典、集合。
>>> a, b, c, d = 20, 5.5, True, 4+3j
>>> print(type(a), type(b), type(c), type(d))
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>

此外還能夠用 isinstance 來判斷:

>>> a = 111
>>> isinstance(a, int)
True

isinstance 和 type 的區別在於:

class A:
    pass

class B(A):
    pass

isinstance(A(), A)  # returns True
type(A()) == A      # returns True
isinstance(B(), A)    # returns True
type(B()) == A        # returns False

區別就是:

  • type()不會認爲子類是一種父類類型。
  • isinstance()會認爲子類是一種父類類型。

注:在 Python2 中是沒有布爾型的,它用數字 0 表示 False,用 1 表示 True。到 Python3 中,把 True 和 False 定義成關鍵字了,但它們的值仍是 1 和 0,它們能夠和數字相加。

您也可使用del語句刪除一些對象引用。

del語句的語法是:

del var1[,var2[,var3[....,varN]]]]

您能夠經過使用del語句刪除單個或多個對象。例如:

del var
del var_a, var_b

數值運算

>>> 5 + 4  # 加法
9
>>> 4.3 - 2 # 減法
2.3
>>> 3 * 7  # 乘法
21
>>> 2 / 4  # 除法,獲得一個浮點數
0.5
>>> 2 // 4 # 除法,獲得一個整數
0
>>> 17 % 3 # 取餘 
2
>>> 2 ** 5 # 乘方
32

注意

  • 一、Python能夠同時爲多個變量賦值,如a, b = 1, 2。
  • 二、一個變量能夠經過賦值指向不一樣類型的對象。
  • 三、數值的除法(/)老是返回一個浮點數,要獲取整數使用//操做符。
  • 四、在混合計算時,Python會把整型轉換成爲浮點數。

2.  bool (布爾值)

  真或假
  1 或 0

3.  string (字符串)

"hello world"
萬惡的字符串拼接:
   python中的字符串在C語言中體現爲是一個字符數組,每次建立字符串時候須要在內存中開闢一塊連續的空,而且一旦須要修改字符串的話,就須要再次開闢空間,萬惡的+號每出現一次就會在內從中從新開闢一塊空間。
字符串格式化:
name = "shuke"
print "i am %s " % name
#輸出: i am shuke
注: 字符串是 %s;整數 %d;浮點數%f
Python中的字符串用單引號(')或雙引號(")括起來,同時使用反斜槓(\)轉義特殊字符。

與 C 字符串不一樣的是,Python 字符串不能被改變。向一個索引位置賦值,好比word[0] = 'm'會致使錯誤。

注意

  • 1. 反斜槓能夠用來轉義,使用r可讓反斜槓不發生轉義。
  • 2. 字符串能夠用+運算符鏈接在一塊兒,用*運算符重複。
  • 3. Python中的字符串有兩種索引方式,從左往右以0開始,從右往左以-1開始。
  • 4. Python中的字符串不能改變。
基本操做:
  • 移除空白
  • 分割
  • 長度
  • 索引
  • 切片

4.  List(列表)

List(列表) 是 Python 中使用最頻繁的數據類型。

列表能夠完成大多數集合類的數據結構實現。列表中元素的類型能夠不相同,它支持數字,字符串甚至能夠包含列表(所謂嵌套)。

列表是寫在方括號([])之間、用逗號分隔開的元素列表。

和字符串同樣,列表一樣能夠被索引和截取,列表被截取後返回一個包含所需元素的新列表。

建立列表:
name_list = ['alex', 'seven', 'eric']
或
name_list = list(['alex', 'seven', 'eric'])

List內置了有不少方法,例如append()、pop()等等,這在後面會講到。

注意

  • 一、List寫在方括號之間,元素用逗號隔開。
  • 二、和字符串同樣,list能夠被索引和切片。
  • 三、List可使用+操做符進行拼接。
  • 四、List中的元素是能夠改變的。

基本操做:

  • 索引
  • 切片
  • 追加
  • 刪除
  • 長度
  • 切片
  • 循環
  • 包含

5. Tuple(元組)(不可變的列表)
元組(tuple)與列表相似,不一樣之處在於元組的元素不能修改。元組寫在小括號(())裏,元素之間用逗號隔開。

建立元組:

ages = (11, 22, 33, 44, 55)
或
ages = tuple((11, 22, 33, 44, 55))

string、list和tuple都屬於sequence(序列)。

注意:

  • 一、與字符串同樣,元組的元素不能修改。
  • 二、元組也能夠被索引和切片,方法同樣。
  • 三、注意構造包含0或1個元素的元組的特殊語法規則。
  • 四、元組也可使用+操做符進行拼接。
基本操做:
  • 索引
  • 切片
  • 循環
  • 長度
  • 包含

6.  Dictionary(字典)(無序)

字典(dictionary)是Python中另外一個很是有用的內置數據類型。

列表是有序的對象結合,字典是無序的對象集合。二者之間的區別在於:字典當中的元素是經過鍵來存取的,而不是經過偏移存取。

字典是一種映射類型,字典用"{ }"標識,它是一個無序的鍵(key) : 值(value)對集合。

鍵(key)必須使用不可變類型。

在同一個字典中,鍵(key)必須是惟一的。

建立字典:

person = {"name": "mr.wu", 'age': 18}
或
person = dict({"name": "mr.wu", 'age': 18})

另外,字典類型也有一些內置的函數,例如clear()、keys()、values()等。

注意

  • 一、字典是一種映射類型,它的元素是鍵值對。
  • 二、字典的關鍵字必須爲不可變類型,且不能重複。
  • 三、建立空字典使用{}。

基本操做:

  • 索引
  • 新增
  • 刪除
  • 鍵、值、鍵值對
  • 循環
  • 長度

7.  set(集合)

集合(set)是一個無序不重複元素的序列。

基本功能是進行成員關係測試和刪除重複元素。

可使用大括號 {} 或者 set() 函數建立集合,注意:建立一個空集合必須用 set() 而不是 {},由於 {}是用來建立一個空字典。

建立集合:

student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}
name = set()       #建立一個空集合

注意

  • 一、無序
  • 二、元素不重複
  • 三、關係測試
  • 四、自然去重

  基本操做:   

  • print(a - b)    # a和b的差集
  • print(a | b)    # a和b的並集
  • print(a & b)   # a和b的交集
  • print(a ^ b)    # a和b中不一樣時存在的元素

10、運算

  •  算數運算

  如下假設變量: a=10,b=20

  

  • 比較運算

  如下假設變量a爲10,變量b爲20:

  

  • 賦值運算

  如下假設變量a爲10,變量b爲20:

  

  • 邏輯運算

  

  • 成員運算

  

  • 身份運算

  

  • 位運算

  

  • 運算符優先級

  

  更多內容:http://www.runoob.com/python/python-operators.html

 11、三元運算

 示例:

result = 值1 if 條件 else 值2            # 若是條件成立,那麼將 「值1」 賦值給result變量,不然,將「值2」賦值給result變量

若是條件爲真:result = 值1
若是條件爲假:result = 值2

 

12、流程控制 if...else...

Python條件語句是經過一條或多條語句的執行結果(True或者False)來決定執行的代碼塊。

能夠經過下圖來簡單瞭解條件語句的執行過程:

Python程序語言指定任何非0和非空(null)值爲true,0 或者 null爲false。

Python 編程中 if 語句用於控制程序的執行,基本形式爲:

if 判斷條件:
    執行語句……
else:
    執行語句…

其中"判斷條件"成立時(非零),則執行後面的語句,而執行內容能夠多行,以縮進來區分表示同一範圍。

else 爲可選語句,當須要在條件不成立時執行內容則能夠執行相關語句,具體例子以下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 例1:if 基本用法

flag = False
name = 'luren'
if name == 'python':         # 判斷變量否爲'python'
    flag = True          # 條件成立時設置標誌爲真
    print 'welcome boss'    # 並輸出歡迎信息
else:
    print name              # 條件不成立時輸出變量名稱

if 語句的判斷條件能夠用>(大於)、<(小於)、==(等於)、>=(大於等於)、<=(小於等於)來表示其關係。

當判斷條件爲多個值時,可使用如下形式:

if 判斷條件1:
    執行語句1……
elif 判斷條件2:
    執行語句2……
elif 判斷條件3:
    執行語句3……
else:
    執行語句4……
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 例2:elif用法

num = 5     
if num == 3:            # 判斷num的值
    print 'boss'        
elif num == 2:
    print 'user'
elif num == 1:
    print 'worker'
elif num < 0:           # 值小於零時輸出
    print 'error'
else:
    print 'roadman'     # 條件均不成立時輸出

當if有多個條件時可以使用括號來區分判斷的前後順序,括號中的判斷優先執行,此外 and 和 or 的優先級低於>(大於)、<(小於)等判斷符號,即大於和小於在沒有括號的狀況下會比與或要優先判斷。

簡單的語句組

你也能夠在同一行的位置上使用if條件判斷語句,以下實例:

#!/usr/bin/python 
# -*- coding: UTF-8 -*-
 
var = 100 
if ( var  == 100 ) : print "變量 var 的值爲100" 
print "Good bye!"

 

12、循環

1. for循環

用戶按照順序循環可迭代對象中的內容:
li = [11,22,33,44]
for item in li:
    print item

2. enumrate

爲可迭代的對象添加序號
sequence = [12, 34, 34, 23, 45, 76, 89]
for k,v in enumerate(sequence):
  print(k,v)

3. range和xrange

指定範圍,生成指定的數字
print range(1, 10)
# 結果:[1, 2, 3, 4, 5, 6, 7, 8, 9]
print range(1, 10, 2)
# 結果:[1, 3, 5, 7, 9] 
print range(30, 0, -2)
# 結果:[30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2]

 4. 循環使用 else 語句

在 python 中,for … else 表示這樣的意思,for 中的語句和普通的沒有區別,else 中的語句會在循環正常執行完(即 for 不是經過 break 跳出而中斷的)的狀況下執行,while … else 也是同樣。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
for num in range(10,20):  # 迭代 10 到 20 之間的數字
   for i in range(2,num): # 根據因子迭代
      if num%i == 0:      # 肯定第一個因子
         j=num/i          # 計算第二個因子
         print '%d 等於 %d * %d' % (num,i,j)
         break            # 跳出當前循環
   else:                  # 循環的 else 部分
      print num, '是一個質數'

 使用場景:

  • 文件操做時當操做完成時輸出提示
with open('a.txt','r',encoding='utf-8') as read_f,\
        open('aa.txt','w',encoding='utf-8') as write_f:

    for line in read_f:
        write_f.write(line)
    else:
        print('write successfull')

  

while 循環

1. Gif 演示 Python while 語句執行過程

2.  無限循環

 有一種循環叫死循環,一經觸發,就運行個天荒地老、海枯石爛。

count = 0
while True:
    print("你是風兒我是沙,纏纏綿綿到天涯...",count)
    count +=1

3.  循環使用 else 語句

在 python 中,while … else 在循環條件爲 false 時執行 else 語句塊:

#!/usr/bin/python

count = 0
while count < 5:
   print count, " is  less than 5"
   count = count + 1
else:
   print count, " is not less than 5"

4.  簡單語句組

相似 if 語句的語法,若是你的 while 循環體中只有一條語句,你能夠將該語句與while寫在同一行中, 以下所示:

#!/usr/bin/python

flag = 1
while (flag): print 'Given flag is really true!'
print "Good bye!"

注意:1. 以上的無限循環你可使用 CTRL+C 來中斷循環。

   2. pass是空語句,是爲了保持程序結構的完整性。

5. 循環控制

while 語句時還有另外兩個重要的命令 continue,break 來跳過循環,continue 用於跳過該次循環,break 則是用於退出循環,此外"判斷條件"還能夠是個常值,表示循環一定成立,具體用法以下:

# continue 和 break 用法

i = 1
while i < 10:   
    i += 1
    if i%2 > 0:     # 非雙數時跳過輸出
        continue
    print i         # 輸出雙數二、四、六、八、10

i = 1
while 1:            # 循環條件爲1一定成立
    print i         # 輸出1~10
    i += 1
    if i > 10:     # 當i大於10時跳出循環
        break

 

參考資料: http://www.cnblogs.com/alex3714/articles/5465198.html

相關文章
相關標籤/搜索