Python2.7官方指南(中文版):http://pan.baidu.com/s/1dDm18xrhtml
Python3.4官方指南(中文版):http://pan.baidu.com/s/1kTrDXIZpython
初學者建議按照入門指南來學習,關鍵必定要按照例子寫代碼;這裏用 Notepad++ 來快速編寫、調試運行代碼
程序員
Python 幫助文檔:在線 https://docs.python.org/3/ 本地(安裝Python時已默認保存該文檔)數據庫
因爲Python源代碼也是一個文本文件,因此,當你的源代碼中包含中文的時候,在保存源代碼時,就須要務必指定保存爲UTF-8編碼。當Python解釋器讀取源代碼時,爲了讓它按UTF-8編碼讀取,咱們一般在文件開頭寫上這兩行:編程
# !/usr/bin/env python # -*- coding:utf-8 -*-
第一行註釋是爲了告訴Linux/OS X系統,這是一個Python可執行程序,Windows系統會忽略這個註釋;網絡
第二行註釋是爲了告訴Python解釋器,按照UTF-8編碼讀取源代碼,不然,你在源代碼中寫的中文輸出可能會有亂碼。數據結構
若是你使用Notepad++進行編輯,除了要加上# -*- coding: utf-8 -*-
外,中文字符串必須是Unicode字符串ide
( 字符編碼 具體詳見 Python學習(四)數據結構 —— str )函數
1 # 註釋以 # 字符起始,直至實際的行尾;代碼中註釋不會被Python解釋;文本字符串中的#僅表示# 2 # this is the first comment 3 SPAM = 1 # and this is the second comment 4 STRING = "# This is not a comment" # and this is the third comment 5 ''' 先後三個單引號可進行多行註釋 6 一般是對函數、對象的說明 7 註釋代碼仍以 # 爲主 8 '''
(Note: 使用IDE的註釋快捷鍵,可方便註釋/去註釋多行代碼;如 Notepad++ 是 "Ctrl +Q" )工具
1 # " = " 用於變量賦值;變量直接賦值,無須定義變量類型; 無須定義變量的數據類型 2 a = 20 3 # n # 該條報錯!變量在使用前必須賦值,不然會出錯 4 x = y = z = 1 # 可將同一個值賦給多個變量
第三行代碼若執行,會報錯,顯示以下:
在Python中,變量名沒有類型,但對象有;變量名只是對對象的引用(內部實現爲指針)
語法: (下劃線或字母)+(任意數目的字母、數字或下劃線)
變量名必須如下劃線或字母開頭,然後面接任意數目的字母、數字或下劃線。
區分大小寫: SPAM和spam不一樣
禁止使用保留字
命名慣例:
以單一下劃線開頭的變量名(_X)不會被 from module import *語句導入
先後有下劃線的變量名(_X_)是系統定義的變量名,對解釋器有特殊意義
以雙下劃線開頭,但結尾沒有雙下劃線的變量名(__X)是類的本地(「壓縮」)變量
經過交互模式運行時,只有單個下劃線的變量名(_)會保存最後表達式的結果
1 # 簡單的輸入輸出 2 raw_input("Please input: ") # Python2.x raw_input() 3 # input("Please input: ") # Python3.x input() 4 print "hello world" # Python2.x 能夠不用加() 5 print("hello world") # Python3.x 必需要加(),否則會報錯! Python3.x print() 會是空行,而Python2.x print() 則會顯示(),須注意! 6 # print("This is "Note"") # 該條報錯!需對"轉義
運行輸入後,顯示 raw_input("Please input: ") 括號內爲顯示的字符串,用戶可輸入
一般會對用戶輸入賦值, 如 a = raw_input("Please input: ")
運行輸出後,顯示 print("hello world") 括號內爲輸出的內容
Note: Python 2.x raw_input(Please input: ) print "hello world" 與 Python 3.x 有不一樣;copy 網上代碼若運行報錯,有可能就是版本問題
1 # 關於特殊字符及Unicode 2 print("This is \"Note\"") # \ 轉義 3 print("This is\nNote") # \n 換行 4 print ("Hello"+u"\u0020"+"World") # u'xxxx':Python2.x unicode對象 = 直接在字符串前加u關鍵字 5 print("Hello\u0020World") # Python2.x 直接輸出 Hello\u0020World ,Python3.x 會輸出 Hello World
字符串若包含 " 等,解釋器會引發混淆,需轉義;另,\n 表示換行
從Python 3.0開始全部的字符串都支持Unicode(參考 http://www.unicode.org)
Unicode 的先進之處在於爲每一種現代或古代使用的文字系統中出現的每個字符都提供了統一的序列號。以前,文字系統中的字符只能有 256 種可能的順序。經過代碼頁分界映射。文本綁定到映射文字系統的代碼頁。這在軟件國際化的時候尤爲麻煩(一般寫做 i18n —— ’i’ + 18 個字符 + ’n’ )。Unicode 解決了爲全部的文字系統設置一個獨立代碼頁的難題。
# 例一:Fibonacci數列 a,b = 0,1 # 變量也可這麼賦值,但不建議 while b < 30: print(b) a,b = b,a+b # 至關於 a=b b = a+b
運行後如圖: 該代碼輸出了一段 Fibonacci數列 ,使用了while的循環語句,暫時不理解無妨,僅感覺下Python的語法格式
須要注意的是:縮進
Python開發者有意讓違反了縮進規則的程序不能經過編譯,以此來強制程序員養成良好的編程習慣。而且Python語言利用縮進表示語句塊的開始和退出(Off-side規則),而非使用花括號或者某種關鍵字。增長縮進表示語句塊的開始,而減小縮進則表示語句塊的退出。縮進成爲了語法的一部分。一樣的如 if 語句以下:
根據PEP的規定,必須使用4個空格來表示每級縮進(不清楚4個空格的規定如何,在實際編寫中能夠自定義空格數,可是要知足每級縮進間空格數相 等)。使用Tab字符和其它數目的空格雖然均可以編譯經過,但不符合編碼規範。支持Tab字符和其它數目的空格僅僅是爲兼容很舊的的Python程序和某些有問題的編輯程序。
1 # 例二:簡單if 2 a = 2 3 if a>1: 4 print("a>1") # if 無執行語句會報錯,若需實現if條件下print,參考以下 5 6 a = 0 7 if a>1: 8 print("a>1") 9 print("a!=1") # 該語句始終會執行,由於縮進並不在if條件下
例二 直接執行會報錯,
必定須要注意語句格式上代碼行的縮進,但即便不報錯也不表明程序不出錯,若例二中,若要求 print("a!=1") 僅在 a>1 的狀況下執行
該處代碼應由
1 a = 0 2 if a>1: 3 print("a>1") 4 print("a!=1") # 該語句始終會執行,由於縮進並不在if條件下
改成
1 a = 0 2 if a>1: 3 print("a>1") 4 print("a!=1") # 該語句僅if成立條件下執行
僅介紹,具體參閱後續章節
if語句,當條件成立時運行語句塊。常常與else, elif(至關於else if) 配合使用。
for語句,遍歷列表、字符串、字典、集合等迭代器,依次處理迭代器中的每一個元素。
while語句,當條件爲真時,循環運行語句塊。
try語句。與except,finally配合使用處理在程序運行中出現的異常狀況。
class語句。用於定義類型。
def語句。用於定義函數和類型的方法。
pass語句。表示此行爲空,不運行任何操做。
assert語句。用於程序調適階段時測試運行條件是否知足。
with語句。Python2.6之後定義的語法,在一個場景中運行語句塊。好比,運行語句塊前加密,而後在語句塊運行退出後解密。
yield語句。在迭代器函數內使用,用於返回一個元素。自從Python 2.5版本之後。這個語句變成一個運算符。
raise語句。製造一個錯誤。
import語句。導入一個模塊或包。
from import語句。從包導入模塊或從模塊導入某個對象。
import as語句。將導入的對象賦值給一個變量。
in語句。判斷一個對象是否在一個字符串/列表/元組裏。
僅介紹,具體參閱後續章節
除了各類數據類型,Python語言還用類型來表示函數、模塊、類型自己、對象的方法、編譯後的Python代碼、運行時信息等等。所以,Python具有很強的動態性。
僅介紹,具體參閱後續章節
僅介紹,具體參閱後續章節
Python的函數支持遞歸、默認參數值、可變參數,但不支持函數重載。爲了加強代碼的可讀性,能夠在函數後書寫「文檔字符串」(Documentation Strings,或者簡稱docstrings),用於解釋函數的做用、參數的類型與意義、返回值類型與取值範圍等。可使用內置函數help()打印出函數的使用幫助。好比: help(randint)1 # 函數示例 2 def my_fun1(): 3 print("hi") 4 my_fun1() # 調用函數 5 def my_fun2(a): # 函數可帶參數, 參數可爲多個 6 if(a>2): 7 print(">2") 8 my_fun2(3)
僅介紹,具體參閱後續章節
1 # 對象示例 2 class User(object): # Python2.x 需在()內加object;Python3.x 不用加object 3 def __init__(self,name): # 相似於構造函數 4 self.name=name 5 def print_name(self): 6 print(self.name) 7 8 u = User("John") # u爲一 User對象 9 print(u.name) # 輸出對象屬性 10 User.print_name(u) # 調用print_name()函數
Python擁有一個強大的標準庫。Python語言的核心只包含數字、字符串、列表、字典、文件等常見類型和函數,而由Python標準庫提供了系統管理、網絡通訊、文本處理、數據庫接口、圖形系統、XML處理等額外的功能。Python標準庫命名接口清晰、文檔良好,很容易學習和使用。 如引用,需import,如引入算數模塊 import math
Python社區提供了大量的第三方模塊,使用方式與標準庫相似。它們的功能無所不包,覆蓋科學計算、Web開發、數據庫接口、圖形系統多個領域,而且大多成熟而穩定。第三方模塊可使用Python或者C語言編寫。SWIG,SIP經常使用於將C語言編寫的程序庫轉化爲Python模塊。Boost C++ Libraries包含了一組庫,Boost.Python,使得以 Python 或 C++ 編寫的程序能互相調用。藉助於擁有基於標準庫的大量工具、可以使用低級語言如C和能夠做爲其餘庫接口的C++,Python已成爲一種強大的應用於其餘語言與工具之間的膠水語言。