Python的特色java
1. 簡單python
Python是一種表明簡單思想的語言。c++
2. 易學正則表達式
Python有極其簡單的語法。數據庫
3. 免費、開源express
Python是FLOSS(自由/開放源碼軟件)之一。編程
4. 高層語言瀏覽器
使用Python編寫程序時無需考慮如何管理程序使用的內存一類的底層細節。數據結構
5. 可移植性app
Python已被移植到不少平臺,這些平臺包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/二、Amiga、AROS、AS/400、
BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、
Windows CE甚至還有PocketPC。
6. 解釋性
能夠直接從源代碼運行。在計算機內部,python解釋器把源代碼轉換爲字節碼的中間形式,而後再把它翻譯成計算機使用的機器語言。
7. 面向對象
Python既支持面向過程編程也支持面向對象編程。
8. 可擴展性
部分程序可使用其餘語言編寫,如c/c++。
9. 可嵌入型
能夠把Python嵌入到c/c++程序中,從而提供腳本功能。
10. 豐富的庫
Python標準庫確實很龐大。它能夠幫助你處理各類工做,包括正則表達式、文檔生成、單元測試、線程、數據庫、網頁瀏覽器、CGI、FTP、
電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統、GUI(圖形用戶界面)、Tk和其餘與系統有關的操做。
---------------分割線------------------------如下是Python的基本語法---------------------------------------------------------
1、基本概念
1. python中數有四種類型:整數、長整數、浮點數和複數。
整數, 如 1
長整數 是比較大的整數
浮點數 如 1.2三、3E-2
複數 如 1 + 2j、 1.1 + 2.2j
2. 字符串(字符的序列)
python中單引號和雙引號使用徹底相同。
使用三引號('''或""")能夠指定一個多行字符串。
轉義符 '\'
天然字符串, 經過在字符串前加r或R。 如 r"this is a line with \n" 則\n會顯示,並非換行。
python容許處理unicode字符串,加前綴u或U, 如 u"this is an unicode string"。
字符串是不可變的。
按字面意義級聯字符串,如"this " "is " "string"會被自動轉換爲this is string。
3. 標識符的命名
第一個字符必須是字母表中字母或下劃線'_'。
標識符的其餘的部分有字母、數字和下劃線組成。
標識符對大小寫敏感。
4. 對象
python程序中用到的任何「東西」都成爲「對象」。
5. 邏輯行和物理行
物理行是咱們在編寫程序時看到的,邏輯行則是python看到的。
python中分號;標識一個邏輯行的結束,可是實際中通常每一個物理行只寫一個邏輯行,能夠避免使用分號。
多個物理行中能夠寫一個邏輯行,以下:
s = "peter is \
writing this article"
上面\的使用被稱爲‘明確的行鏈接’, 又如:
\
6. 縮進
空白在python是很是重要的,行首的空白是最重要的,又稱爲縮進。行首的空白(空格和製表符)用來決定邏輯行的縮進層次,從而決定語句
分組。這意味着同一層次的語句必須有相同的縮進,每一組這樣的語句稱爲一個塊。
注意:不要混合使用空格和製表符來縮進,由於在跨越不一樣的平臺時沒法正常工做。
2、運算符與表達式
1. 運算符與其用法
運算符 | 名稱 | 說明 | 例子 |
---|---|---|---|
+ | 加 | 兩個對象相加 | 3 + 5獲得8。'a' + 'b'獲得'ab'。 |
- | 減 | 獲得負數或是一個數減去另外一個數 | -5.2獲得一個負數。50 - 24獲得26。 |
* | 乘 | 兩個數相乘或是返回一個被重複若干次的字符串 | 2 * 3獲得6。'la' * 3獲得'lalala'。 |
** | 冪 | 返回x的y次冪 |
3 ** 4獲得81(即3 * 3 * 3 * 3) |
/ | 除 | x除以y | 4/3獲得1(整數的除法獲得整數結果)。4.0/3或4/3.0獲得1.3333333333333333 |
// | 取整除 | 返回商的整數部分 | 4 // 3.0獲得1.0 |
% | 取模 | 返回除法的餘數 | 8%3獲得2。-25.5%2.25獲得1.5 |
<< | 左移 | 把一個數的比特向左移必定數目(每一個數在內存中都表示爲比特或二進制數字,即0和1) | 2 << 2獲得8。——2按比特表示爲10 |
>> | 右移 | 把一個數的比特向右移必定數目 | 11 >> 1獲得5。——11按比特表示爲1011,向右移動1比特後獲得101,即十進制的5。 |
& | 按位與 | 數的按位與 | 5 & 3獲得1。 |
| | 按位或 | 數的按位或 | 5 | 3獲得7。 |
^ | 按位異或 | 數的按位異或 | 5 ^ 3獲得6 |
~ | 按位翻轉 | x的按位翻轉是-(x+1) | ~5獲得6。 |
< | 小於 | 返回x是否小於y。全部比較運算符返回1表示真,返回0表示假。這分別與特殊的變量True和False等價。注意,這些變量名的大寫。 | 5 < 3返回0(即False)而3 < 5返回1(即True)。比較能夠被任意鏈接:3 < 5 < 7返回True。 |
> | 大於 | 返回x是否大於y | 5 > 3返回True。若是兩個操做數都是數字,它們首先被轉換爲一個共同的類型。不然,它老是返回False。 |
<= | 小於等於 | 返回x是否小於等於y | x = 3; y = 6; x <= y返回True。 |
>= | 大於等於 | 返回x是否大於等於y | x = 4; y = 3; x >= y返回True。 |
== | 等於 | 比較對象是否相等 | x = 2; y = 2; x == y返回True。x = 'str'; y = 'stR'; x == y返回False。x = 'str'; y = 'str'; x == y返回True。 |
!= | 不等於 | 比較兩個對象是否不相等 | x = 2; y = 3; x != y返回True。 |
not | 布爾「非」 | 若是x爲True,返回False。若是x爲False,它返回True。 | x = True; not y返回False。 |
and | 布爾「與」 | 若是x爲False,x and y返回False,不然它返回y的計算值。 | x = False; y = True; x and y,因爲x是False,返回False。在這裏,Python不會計算y,由於它知道這個表達式的值確定是False(由於x是False)。這個現象稱爲短路計算。 |
or | 布爾「或」 | 若是x是True,它返回True,不然它返回y的計算值。 | x = True; y = False; x or y返回True。短路計算在這裏也適用。 |
2. 運算符優先級(從低到高)
運算符 | 描述 |
---|---|
lambda | Lambda表達式 |
or | 布爾「或」 |
and | 布爾「與」 |
not x | 布爾「非」 |
in,not in | 成員測試 |
is,is not | 同一性測試 |
<,<=,>,>=,!=,== | 比較 |
| | 按位或 |
^ | 按位異或 |
& | 按位與 |
<<,>> | 移位 |
+,- | 加法與減法 |
*,/,% | 乘法、除法與取餘 |
+x,-x | 正負號 |
~x | 按位翻轉 |
** | 指數 |
x.attribute | 屬性參考 |
x[index] | 下標 |
x[index:index] | 尋址段 |
f(arguments...) | 函數調用 |
(experession,...) | 綁定或元組顯示 |
[expression,...] | 列表顯示 |
{key:datum,...} | 字典顯示 |
'expression,...' | 字符串轉換 |
3. python 控制檯輸出 使用print
% % (, )
3、控制流
1. if 語句
i = 10 n = int(raw_input()) n == i: n < i: :
2. while語句
True: :
3. for 循環 for..in
i range(0, 5): i :
注:當for循環結束後執行else語句;
range(a, b)返回一個序列,從a開始到b爲止,但不包括b,range默認步長爲1,能夠指定步長,range(0,10,2);
4. break語句
終止循環語句,若是從for或while中終止,任何對應循環的else將不執行。
5. continue語句
continue語句用來調過當前循環的剩餘語句,而後繼續下一輪循環。
4、函數
函數經過def定義。def關鍵字後跟函數的標識符名稱,而後跟一對圓括號,括號以內能夠包含一些變量名,該行以冒號結尾;接下來是一塊語句,即函數體。
sumOf(a, b): a + b
1. 函數形參
函數中的參數名稱爲‘形參’,調用函數時傳遞的值爲‘實參’
2. 局部變量
在函數內定義的變量與函數外具備相同名稱的其餘變量沒有任何關係,即變量名稱對於函數來講是局部的。這稱爲變量的做用域。
global語句, 爲定義在函數外的變量賦值時使用global語句。
func(): x , x x = 1 x = 3 func() x
3. 默認參數
經過使用默認參數可使函數的一些參數是‘可選的’。
say(msg, times = 1): msg * times say() say(, 3)
注意:只有在形參表末尾的那些參數能夠有默認參數值,即不能在聲明函數形參的時候,先聲明有默認值的形參然後聲明沒有默認值的形參,只是由於賦給形參的值是根據位置而賦值的。
4. 關鍵參數
若是某個函數有不少參數,而如今只想指定其中的部分,那麼能夠經過命名爲這些參數賦值(稱爲‘關鍵參數’)。
優勢:沒必要擔憂參數的順序,使函數變的更加簡單;假設其餘參數都有默認值,能夠只給咱們想要的那些參數賦值。
func(a, b=2, c=3): % (a, b, c) func(1) func(1, 5) func(1, c = 10) func(c = 20, a = 30)
5. return 語句
return語句用來從一個函數返回,即跳出函數。可從函數返回一個值。
沒有返回值的return語句等價於return None。None表示沒有任何東西的特殊類型。
6. DocStrings (文檔字符串)
func(): func.
5、模塊
模塊就是一個包含了全部你定義的函數和變量的文件,模塊必須以.py爲擴展名。模塊能夠從其餘程序中‘輸入’(import)以便利用它的功能。
在python程序中導入其餘模塊使用'import', 所導入的模塊必須在sys.path所列的目錄中,由於sys.path第一個字符串是空串''即當前目錄,因此程序中可導入當前目錄的模塊。
1. 字節編譯的.pyc文件
導入模塊比較費時,python作了優化,以便導入模塊更快些。一種方法是建立字節編譯的文件,這些文件以.pyc爲擴展名。
pyc是一種二進制文件,是py文件經編譯後產生的一種byte code,並且是跨平臺的(平臺無關)字節碼,是有python虛擬機執行的,相似於
java或.net虛擬機的概念。pyc的內容,是跟python的版本相關的,不一樣版本編譯後的pyc文件是不一樣的。
2. from .. import
若是想直接使用其餘模塊的變量或其餘,而不加'模塊名+.'前綴,可使用from .. import。
例如想直接使用sys的argv,from sys import argv 或 from sys import *
3. 模塊的__name__
每一個模塊都有一個名稱,py文件對應模塊名默認爲py文件名,也可在py文件中爲__name__賦值;若是是__name__,說明這個模塊被用戶
單獨運行。
4. dir()函數
dir(sys)返回sys模塊的名稱列表;若是不提供參數,即dir(),則返回當前模塊中定義名稱列表。
del -> 刪除一個變量/名稱,del以後,該變量就不能再使用。
6、數據結構
python有三種內建的數據結構:列表、元組和字典。
1. 列表
list是處理一組有序項目的數據結構,列表是可變的數據結構。列表的項目包含在方括號[]中,eg: [1, 2, 3], 空列表[]。判斷列表中是否包含某項可使用in, 好比 l = [1, 2, 3]; print 1 in l; #True;支持索引和切片操做;索引時若超出範圍,則IndexError;使用函數len()查看長度;使用del能夠刪除列表中的項,eg: del l[0] # 若是超出範圍,則IndexError
list函數以下:
append(value) ---向列表尾添加項value
l = [1, 2, 2] l.append(3)
count(value) ---返回列表中值爲value的項的個數
l = [1, 2, 2] l.count(2)
extend(list2) ---向列表尾添加列表list2
l = [1, 2, 2] l1 = [10, 20] l.extend(l1) l
index(value, [start, [stop]]) ---返回列表中第一個出現的值爲value的索引,若是沒有,則異常 ValueError
l = [1, 2, 2] a = 4 : l.index(a) ValueError, ve: % a
insert(i, value) ---向列表i位置插入項vlaue,若是沒有i,則添加到列表尾部
l = [1, 2, 2] l.insert(1, 100) l l.insert(100, 1000) l
pop([i]) ---返回i位置項,並從列表中刪除;若是不提供參數,則刪除最後一個項;若是提供,可是i超出索引範圍,則異常IndexError
l = [0, 1, 2, 3, 4, 5] l.pop() l l.pop(1) l : l.pop(100) IndexError, ie:
remove(value) ---刪除列表中第一次出現的value,若是列表中沒有vlaue,則異常ValueError
l = [1, 2, 3, 1, 2, 3] l.remove(2) l : l.remove(10) ValueError, ve:
reverse() ---列表反轉
l = [1, 2, 3] l.reverse() l
sort(cmp=None, key=None, reverse=False) ---列表排序
【Python Library Reference】
cmp:cmp specifies a custom comparison function of two arguments (iterable elements) which should return a negative, zero or positive number depending on whether the first argument is considered smaller than, equal to, or larger than the second argument:
"cmp=lambda x,y: cmp(x.lower(), y.lower())"
key:key specifies a function of one argument that is used to extract a comparison key from each list element: "key=str.lower"
reverse:reverse is a boolean value. If set to True, then the list elements are sorted as if each comparison were reversed.In general, the key and reverse conversion processes are much faster than specifying an
equivalent cmp function. This is because cmp is called multiple times for each list element while key and reverse touch each element only once.
l5 = [10, 5, 20, 1, 30] l5.sort() l5 l6 = [, , , ] l6.sort(cmp = s1, s2: cmp(s1[0],s2[1])) l6 l7 = [, , , , ] l7.sort(key = s: s[1]) l7