Python學習(二)Python 簡介


Python 簡介

官方指南及文檔

  Python2.7官方指南(中文版):http://pan.baidu.com/s/1dDm18xr

Python3.4官方指南(中文版):http://pan.baidu.com/s/1kTrDXIZ

  初學者建議按照入門指南來學習,關鍵一定要按照例子寫代碼;這里用 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字符串

      ( 字符編碼 具體詳見 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 網上代碼若運行報錯,有可能就是版本問題

     

     關於特殊字符及Unicode
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禁止沒有明確定義的操作, 比如數字加字符串。
與其它面向對象語言一樣,Python允許程序員定義類型。構造一個對象只需要像函數一樣調用類型即可。類型本身也是特殊類型type的對象(type類型本身也是type對象),這種特殊的設計允許對類型進行反射編程。
Python內置豐富的數據類型。與Java、C++相比,這些數據類型有效地減少代碼的長度。下面這個列表簡要地描述了Python內置數據類型(適用於Python 3.x):

除了各種數據類型,Python語言還用類型來表示函數、模塊、類型本身、對象的方法、編譯后的Python代碼、運行時信息等等。因此,Python具備很強的動態性。

 

表達式

      僅介紹,具體參閱后續章節

Python的表達式寫法與C/C++類似。只是在某些寫法有所差別
算術運算符與C/C++類似。+, -, *, /, //, **, ~, %分別表示加法或者取正、減法或者取負、乘法、除法、整除、乘方、取補、取模。>>, <<表示右移和左移。&, |, ^表示二進制的AND, OR, XOR運算。>, <, ==, !=, <=, >=用於比較兩個表達式的值,分別表示大於、小於、等於、不等於、小於等於、大於等於。在這些運算符里面,~, |, ^, &, <<, >>必須應用於整數。
使用and, or, not表示邏輯運算
區分列表(list)和元組(tuple)兩種類型;支持列表切割(list slices)
一些Python特有的方法,如 range()  lambda 等
 

函數

  僅介紹,具體參閱后續章節

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已成為一種強大的應用於其他語言與工具之間的膠水語言。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM