《簡明Python教程》學習筆記

來源:互聯網
上載者:User

《簡明Python教程(A Byte of Python)》: http://woodpecker.org.cn/abyteofpython_cn/chinese/index.html

Python的創造者是Guido van Rossum。

Python的官方介紹是:“Python是一種簡單易學,功能強大的程式設計語言,它有高效率的高層資料結構,簡單而有效地實現物件導向編程。Python簡潔的文法和對動態輸入的支援,再加上解釋性語言的本質,使得它在大多數平台上的許多領域都是一個理想的指令碼語言,特別適用於快速的應用程式開發。”

特點:文法簡單,無需管理記憶體,可移植性,是解釋型語言,可嵌入c/c++等程式,帶有龐大的標準庫,免費開源。

數有四種類型:整數,長整數,浮點數,複數(-5+4j)。

字串:可用成對的單引號或雙引號,另外還可用三個單引號,包含多行字串,其中可任意使用單引號雙引號,如'''sam'p'le '''。(Python沒有char類型)

變數:無需聲明或定義資料類型,直接賦值。像basic語言。

代碼:一個語句可以分號結尾或者省去分號,直接斷行符號

Python代碼的階層完全依靠縮排,不依靠 { } 。

運算子:和c類似,不同在於:**乘方,//整除,^異或,~按位翻轉(x的按位翻轉是-(x+1),~5是6),布爾操作“非”“與”“或”分別是not, and, or,和c的!, &&, ||不同。

注釋:以井號#開頭,不使用c/c++的注釋符號,應該是為了遵循Unix的指令碼習慣吧。

控制語句

條件控制:if elif else 和c類似,不過不使用括弧,句末加上冒號:。Python沒有switch語句,可以使用if elif else或字典。

while迴圈:while else (else為可選)

for迴圈:for i in range(1, 5): 注意range(1, 5)表示[1, 2, 3, 4],相當於c的for (int i = 1; i < 5; i++)。range預設步長是1,range(1, 5, 2)表示步長為2,[1, 3]。

break: 用於終止迴圈,else不會被執行。

函數

用def定義,例如 def func1(a, b=1): 第二個參數具有預設值。可如此調用func1(1) func1(1, 2) func1(b=2, a=3)改變參數順序

函數參數是傳值的。

變數具有範圍,可通過global來聲明全域變數

return語句:如果沒有返回,相當於寫成return None

pass語句:表示空的語句塊,例如 def func(): pass

文檔字串DocString:每個函數(或模組、類)的第一個邏輯行的字串是文檔字串。通常是一個多行字串,首行以大寫字母開始,句號結尾。第二行空行,第三行是詳細描述。可以func.__doc__列印出來

模組:通過import匯入模組。模組副檔名必須是.py。位元組編譯過的模組是.pyc,可加快模組載入速度,與平台無關。模組就是一個單獨的.py檔案。沒什麼特殊之處。

資料結構:內建三種資料結構:列表list、元組tuple和字典。

list: 可增刪查的列表。alist = ['a', 'b', 'c']

元組tuple: 不可變的列表。atuple = ('a', 'b', 'c') 空元組直接(),但一個成員的元組必須加上逗號 atuple = ('a', )為了區分元組和運算式中一個帶圓括弧的對象。元祖用處最多的地方是列印,如 print '%s is %d' % (var0, var1)

字典dict: d = {key1: value1, key2:value2} 用d['key']來獲得值

列表、元組都可以使用索引index來訪問成員,如alist[0]。index可以為負數,-1表示序列的最後一個元素。

列表直接賦值不會產生列表的拷貝,相當於只是Pointer複製。如list2 = list1兩者完全相同。list2 = list1[:]這樣才會產生新拷貝。

class類: 和其他oo類似。但類的函數參數第一個必須是self,調用時不需要加self。初始化用__init__。顯式刪除對象用__del__。

class Person:
    def __init__(self, name):
        self.name = name

    def sayHi(self):
        print 'Hello, my name is', self.name

p = Person('Swaroop')
p.sayHi()

class的繼承:子類__init__不會自動調用基類的__init__

class Male(Person):

  def__init__(self, name, salary):

     Person.__init__(self, name)

     self.salary = salary

輸入輸出

檔案

讀方式開啟 f = file('aaa.txt')

讀一行(包含斷行符號) line = f.readline()

寫方式開啟 f = file('aaa.txt', 'w')

寫入 f.write('abc')

關閉 f.close()

儲存空間pickle,可在檔案中持久儲存任何Python對象。

import cPickle as p

f = file("a.dat", 'w')

p.dump(['a', 'b'], f)

f.close()

f = file('a.dat')

alist = p.load(f)

異常處理

try:

except EOFError:

except:

自訂異常類型

class ShortInputException(Exception):
    '''A user-defined exception class.'''
    def __init__(self, length, atleast):
        Exception.__init__(self)
        self.length = length
        self.atleast = atleast

try:
    s =
raw_input('Enter something --> ')
    if len(s) < 3:
        raise ShortInputException(
len(s), 3)
    # Other work can continue as usual here
except EOFError:
    print '\nWhy did you do an EOF on me?'
except ShortInputException, x:
    print 'ShortInputException: The input was of length %d, \
          was expecting at least %d'
% (x.length, x.atleast)
else:
    print 'No exception was raised.'

lambda建立函數對象

def make_repeater(n):
    return lambda s: s*n

twice = make_repeater(2)

print twice('word')
print twice(5)

輸出

$ python lambda.py
wordword
10

Python, 學習筆記
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.