文章目錄
交互式運行
可以不用寫文件,直接CLI執行以下命令
python
就可以繼續如同cli界面運行,及時反饋
下劃線
以下劃線開頭的標識符是有特殊意義的。以單下劃線開頭 _foo 的代表不能直接訪問的類屬性,需通過類提供的接口進行訪問,不能用 from xxx import * 而導入。
以雙下劃線開頭的 foo 代表類的私有成員,以雙下劃線開頭和結尾的__foo 代表 Python 裏特殊方法專用的標識,如 init() 代表類的構造函數。
縮進
爲了避免各種系統帶來閱讀上的差異,使用空格代替tab,一般採用4個
引號
- 單引號
- 雙引號
- 三個單引號
變量賦值
a = b = c = 1
a, b, c = 1, 2, "john"
pass
Python pass 是空語句,是爲了保持程序結構的完整性。
pass 不做任何事情,一般用做佔位語句。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 輸出 Python 的每個字母
for letter in 'Python':
if letter == 'h':
pass
print '這是 pass 塊'
print '當前字母 :', letter
print "Good bye!"
執行後結果如下
當前字母 : P
當前字母 : y
當前字母 : t
這是 pass 塊
當前字母 : h
當前字母 : o
當前字母 : n
Good bye!
注意h還是被打印了,這說明pass和continue是不一樣的,pylthon本身也是有continue的
list
數據類型
python的列表中數據類型可以不一樣,這點和java.util.List更像,和[]倒是不一樣
list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["a", "b", "c", "d"]
元組
元組相當於只讀的list
運算
冪
** 冪 - 返回x的y次冪 a**b 爲10的20次方, 輸出結果 100000000000000000000
取整除
// 取整除 - 返回商的整數部分(向下取整)
>>> 9//2
4
>>> -9//2
-5
邏輯運算符
and x and y 布爾"與" - 如果 x 爲 False,x and y 返回 False,否則它返回 y 的計算值。 (a and b) 返回 20。
or x or y 布爾"或" - 如果 x 是非 0,它返回 x 的值,否則它返回 y 的計算值。 (a or b) 返回 10。
not not x 布爾"非" - 如果 x 爲 True,返回 False 。如果 x 爲 False,它返回 True。 not(a and b) 返回 False
注意python使用的是單詞而不是符號來進行邏輯運算
成員運算符
in 如果在指定的序列中找到值返回 True,否則返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in 如果在指定的序列中沒有找到值返回 True,否則返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True
is is 是判斷兩個標識符是不是引用自一個對象 x is y, 類似 id(x) == id(y) , 如果引用的是同一個對象則返回 True,否則返回 False
is not is not 是判斷兩個標識符是不是引用自不同對象 x is not y , 類似 id(a) != id(b)。如果引用的不是同一個對象則返回結果 True,否則返回 False。
控制語句
if & while
這個和java類似,只是用後接冒號代替了用括號括起來
for
var
#!/usr/bin/python
# -*- coding: UTF-8 -*-
for letter in 'Python': # 第一個實例
print '當前字母 :', letter
fruits = ['banana', 'apple', 'mango']
for fruit in fruits: # 第二個實例
print '當前水果 :', fruit
print "Good bye!"
這種foreach的方式在java中稱爲增強的for循環
index
#!/usr/bin/python
# -*- coding: UTF-8 -*-
fruits = ['banana', 'apple', 'mango']
for index in range(len(fruits)):
print '當前水果 :', fruits[index]
print "Good bye!"
這種是通過下標來取數據
else
常規使用
#!/usr/bin/python
# -*- coding: UTF-8 -*-
for num in range(10,20): # 迭代 10 到 20 之間的數字
for i in range(2,num): # 根據因子迭代
if num%i == 0: # 確定第一個因子
j=num/i # 計算第二個因子
print '%d 等於 %d * %d' % (num,i,j)
break # 跳出當前循環
else: # 循環的 else 部分
print num, '是一個質數'
注意這裏的else是和break搭配使用的,對於一個for(這裏是裏面的那個),只會觸發一個.由於break一般是配合if使用,所以這裏也可以看作是那個if的else,這個結論大致正確,更詳盡的研究參見python中else的研究
函數
def
return
關鍵字參數
使用關鍵字參數時參數順序可以任意
#!/usr/bin/python
# -*- coding: UTF-8 -*-
#可寫函數說明
def printinfo( name, age ):
"打印任何傳入的字符串"
print "Name: ", name
print "Age ", age
return
#調用printinfo函數
printinfo( age=50, name="miki" )
默認參數
不定長參數
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 可寫函數說明
def printinfo( arg1, *vartuple ):
"打印任何傳入的參數"
print "輸出: "
print arg1
for var in vartuple:
print var
return
# 調用printinfo 函數
printinfo( 10 )
printinfo( 70, 60, 50 )
匿名函數
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 可寫函數說明
sum = lambda arg1, arg2: arg1 + arg2
# 調用sum函數
print "相加後的值爲 : ", sum( 10, 20 )
print "相加後的值爲 : ", sum( 20, 20 )
全局變量和局部變量
#!/usr/bin/python
# -*- coding: UTF-8 -*-
total = 0 # 這是一個全局變量
# 可寫函數說明
def sum( arg1, arg2 ):
#返回2個參數的和."
total = arg1 + arg2 # total在這裏是局部變量.
print "函數內是局部變量 : ", total
return total
#調用sum函數
sum( 10, 20 )
print "函數外是全局變量 : ", total
調用結果如下
函數內是局部變量 : 30
函數外是全局變量 : 0
注意全局變量並未改變
如果想使用全局變量需要使用globe來聲明
total = 0 # 這是一個全局變量
# 可寫函數說明
def sum(arg1, arg2):
global total
print(total)
total = 3
return total
# 調用sum函數
sum(10, 20)
print("函數外是全局變量 : ", total)
注意變量要先聲明後使用,這意味着上面的語句中globe不能在print語句下面,並且global total=3是不合法的
異常
捕獲異常
大致格式如下
try:
<語句> #運行別的代碼
except <名字>:
<語句> #如果在try部份引發了'name'異常
except <名字>,<數據>:
<語句> #如果引發了'name'異常,獲得附加的數據
else:
<語句>
當然,也支持finally
try:
<語句>
finally:
<語句> #退出try時總會執行
拋出異常
raise [Exception [, args [, traceback]]]
定義異常
異常應該是典型的繼承自Exception類,通過直接或間接的方式。以下爲與RuntimeError相關的實例,實例中創建了一個類,基類爲RuntimeError,用於在異常觸發時輸出更多的信息。在try語句塊中,用戶自定義的異常後執行except塊語句,變量 e 是用於創建Networkerror類的實例。
class Networkerror(RuntimeError):
def __init__(self, arg):
self.args = arg
在你定義以上類後,你可以觸發該異常,如下所示:
try:
raise Networkerror("Bad hostname")
except Networkerror,e:
print e.args