十分鐘!成都達內就能帶你入門Python學習!超級詳細的基礎教程!
Python
>>> help(5)
Help on int object:
(etc etc)
>>> dir(5)
['__abs__', '__add__', ...]
>>> abs.__doc__
'abs(number) -> number
Return the absolute value of the argument.'
語法
Python中沒有強制的語句終止字符,且代碼塊是通過縮進來指示的。縮進表示一個代碼塊的開始,逆縮進則表示一個代碼塊的結束。聲明以冒號(:)字符結束,並且開啟一個縮進級別。單行注釋以井號字符(#)開頭,多行注釋則以多行字符串的形式出現。賦值(事實上是將對象綁定到名字)通過等號(「=」)實現,雙等號(「==」)用於相等判斷,」+=」和」-=」用於增加/減少運算(由符號右邊的值確定增加/減少的值)。這適用於許多數據類型,包括字符串。你也可以在一行上使用多個變量。例如:
數據類型
Python具有列表(list)、元組(tuple)和字典(dictionaries)三種基本的數據結構,而集合(sets)則包含在集合庫中(但從Python2.5版本開始正式成為Python內建類型)。列表的特點跟一維數組類似(當然你也可以創建類似多維數組的「列表的列表」),字典則是具有關聯關係的數組(通常也叫做哈希表),而元組則是不可變的一維數組(Python中「數組」可以包含任何類型的元素,這樣你就可以使用混合元素,例如整數、字符串或是嵌套包含列表、字典或元組)。數組中第一個元素索引值(下標)為0,使用負數索引值能夠從後向前訪問數組元素,-1表示最後一個元素。數組元素還能指向函數。來看下面的用法:
字符串
Python中的字符串使用單引號(『)或是雙引號(「)來進行標示,並且你還能夠在通過某一種標示的字符串中使用另外一種標示符(例如 「He said 『hello』.」)。而多行字符串可以通過三個連續的單引號(」』)或是雙引號(「」」)來進行標示。Python可以通過u」This is a unicode string」這樣的語法使用Unicode字符串。如果想通過變量來填充字符串,那麼可以使用取模運算符(%)和一個元組。使用方式是在目標字符串中從左至右使用%s來指代變量的位置,或者使用字典來代替,示例如下:
流程控制
Python中可以使用if、for和while來實現流程控制。Python中並沒有select,取而代之使用if來實現。使用for來枚舉列表中的元素。如果希望生成一個由數字組成的列表,則可以使用range()函數。以下是這些聲明的語法示例:
Python
函數
函數通過「def」關鍵字進行聲明。可選參數以集合的方式出現在函數聲明中並緊跟著必選參數,可選參數可以在函數聲明中被賦予一個默認值。已命名的參數需要賦值。函數可以返回一個元組(使用元組拆包可以有效返回多個值)。Lambda函數是由一個單獨的語句組成的特殊函數,參數通過引用進行傳遞,但對於不可變類型(例如元組,整數,字符串等)則不能夠被改變。這是因為只傳遞了該變量的內存地址,並且只有丟棄了舊的對象後,變量才能綁定一個對象,所以不可變類型是被替換而不是改變(譯者註:雖然Python傳遞的參數形式本質上是引用傳遞,但是會產生值傳遞的效果)。例如:
類
Python支持有限的多繼承形式。私有變量和方法可以通過添加至少兩個前導下劃線和最多尾隨一個下劃線的形式進行聲明(如「__spam」,這只是慣例,而不是Python的強制要求)。當然,我們也可以給類的實例取任意名稱。例如:
Python
class MyClass(object):
common = 10
def __init__(self):
self.myvariable = 3
def myfunction(self, arg1, arg2):
return self.myvariable
# This is the class instantiation
>>> classinstance = MyClass()
>>> classinstance.myfunction(1, 2)
3
# This variable is shared by all classes.
>>> classinstance2 = MyClass()
>>> classinstance.common
10
>>> classinstance2.common
10
# Note how we use the class name
# instead of the instance.
>>> MyClass.common = 30
>>> classinstance.common
30
>>> classinstance2.common
30
# This will not update the variable on the class,
# instead it will bind a new object to the old
# variable name.
>>> classinstance.common = 10
>>> classinstance.common
10
>>> classinstance2.common
30
>>> MyClass.common = 50
# This has not changed, because "common" is
# now an instance variable.
>>> classinstance.common
10
>>> classinstance2.common
50
# This class inherits from MyClass. The example
# class above inherits from "object", which makes
# it what's called a "new-style class".
# Multiple inheritance is declared as:
# class OtherClass(MyClass1, MyClass2, MyClassN)
class OtherClass(MyClass):
# The "self" argument is passed automatically
# and refers to the class instance, so you can set
# instance variables as above, but from inside the class.
def __init__(self, arg1):
self.myvariable = 3
print arg1
>>> classinstance = OtherClass("hello")
hello
>>> classinstance.myfunction(1, 2)
3
# This class doesn't have a .test member, but
# we can add one to the instance anyway. Note
# that this will only be a member of classinstance.
>>> classinstance.test = 10
>>> classinstance.test
10
導入
外部庫可以使用 import [libname] 關鍵字來導入。同時,你還可以用 from [libname] import [funcname] 來導入所需要的函數。例如:
Python
import random
from time import clock
randomint = random.randint(1, 100)
>>> print randomint
64
文件I / O
Python針對文件的處理有很多內建的函數庫可以調用。例如,這裡演示了如何序列化文件(使用pickle庫將數據結構轉換為字符串):
其它雜項
數值判斷可以連結使用,例如 1
可以使用 del 刪除變量或刪除數組中的元素。
列表推導式(List Comprehension)提供了一個創建和操作列表的有力工具。列表推導式由一個表達式以及緊跟著這個表達式的for語句構成,for語句還可以跟0個或多個if或for語句,來看下面的例子:
全局變量在函數之外聲明,並且可以不需要任何特殊的聲明即能讀取,但如果你想要修改全局變量的值,就必須在函數開始之處用global關鍵字進行聲明,否則Python會將此變量按照新的局部變量處理(請注意,如果不注意很容易被坑)。例如:
小結
本教程並未涵蓋Python語言的全部內容(甚至連一小部分都稱不上)。Python有非常多的庫以及很多的功能特點需要學習,所以要想學好Python你必須在此教程之外通過其它方式,例如閱讀Dive into Python。我希望這個教程能給你一個很好的入門指導。