文章目錄
為什麼要用python,開發效率高,可移植.
文法:
字串:
1,使用單引號(')==使用雙引號(")==java雙引號(")
2,使用三引號('''或""") ,可以合并多行
3,轉義,與java的‘\’類似。注意(在一個字串中,行末的單獨一個反斜線表示字串在下一行繼續,而不是開始一個新的行。)
4,自然字串通過給字串加上首碼r
或R
來指定。
5,字串不可變,與java類似。
6,字串會按字面意義級聯。
變數:(與java類似)
對象:在python中任何東西都是對象
強烈建議:堅持在每個物理行唯寫一句邏輯行
python對縮排要求嚴格
運算子:與java類似。
流程式控制制:
if:
if
guess == number:
print
'Congratulations, you guessed it.'
# New block starts here
print
"(but you do not win any prizes!)"
# New block ends here
elif
guess < number:
print
'No, it is a little higher than that'
# Another block
# You can do whatever you want in a block ...
else
:
print
'No, it is a little lower than that'
# you must have guess > number to reach here
while:
while
running:
guess =
int
(
raw_input
(
'Enter an integer : '
))
for :
for
i
in
range
(
1
,
5
):
print
i
break:
break
語句是用來 終止 迴圈語句的,即哪怕迴圈條件沒有稱為False
或序列還沒有被完全遞迴,也停止執行迴圈語句。
一個重要的注釋是,如果你從for
或while
迴圈中 終止 ,任何對應的迴圈else
塊將不執行。
continue:
continue
語句被用來告訴Python跳過當前迴圈塊中的剩餘語句,然後 繼續 進行下一輪迴圈。
函數:
#!/usr/bin/python
# Filename: func_doc.py
def
printMax
(x, y):
'''Prints the maximum of two numbers.
The two values must be integers.'''
x =
int
(x)
# convert to integers, if possible
y =
int
(y)
if
x > y:
print
x,
'is maximum'
else
:
print
y,
'is maximum'
printMax(
3
,
5
)
print
printMax.__doc__
模組:
import __name__==‘__main__’ 表示主程式
你可以使用內建的dir
函數來列出模組定義的標識符。標識符有函數、類和變數。
資料結構:
數組:zoo = (
'wolf'
,
'elephant'
,
'penguin'
),zoo[1],zoo[0]
map:注意,你只能使用不可變的對象(比如字串)來作為字典的鍵,但是你可以不可變或可變的對象作為字典的值。基本說來就是,你應該只使用簡單的對象作為鍵。
ab = {
'Swaroop'
:
'swaroopch@byteofpython.info'
,
'Larry'
:
'larry@wall.org'
,
'Matsumoto'
:
'matz@ruby-lang.org'
,
'Spammer'
:
'spammer@hotmail.com'
}
ab[‘Larry’],len(ab)
list:
shoplist = [
'apple'
,
'mango'
,
'carrot'
,
'banana'
]
shoplist.sort(),shoplist.append(
'rice'
)
list
和數組
十分類似,只不過數組
和字串一樣是 不可變的 即你不能修改數組.
序列:list、數組和字串都是序列,但是序列是什麼,它們為什麼如此特別呢?序列的兩個主要特點是索引操作符和切片操作符。索引操作符讓我們可以從序列中抓取一個特定項目。切片操作符讓我們能夠擷取序列的一個切片,即一部分序列。
shoplist[
1
:
3
],shoplist[
2
:],shoplist[:],shoplist[
-1
],shoplist[
0
],這些返回的都是拷貝。
引用;當你建立一個對象並給它賦一個變數的時候,這個變數僅僅 引用 那個對象,而不是表示這個對象本身!
物件導向:
self == java的this
__init__
方法:類似java的構造方法
__del__:對象消失的時候調用。類型java的finalizne
類的變數 由一個類的所有對象(執行個體)共用使用。只有一個類變數的拷貝,所以當某個對象對類的變數做了改動的時候,這個改動會反映到所有其他的執行個體上。
對象的變數 由類的每個對象/執行個體擁有。因此每個對象有自己對這個域的一份拷貝,即它們不是共用的,在同一個類的不同執行個體中,雖然對象的變數有相同的名稱,但是是互不相關的。通過一個例子會使這個易於理解。
Python中所有的類成員(包括資料成員)都是 公用的 ,所有的方法都是 有效 。
只有一個例外:如果你使用的資料成員名稱以 雙底線首碼 比如__privatevar
,Python的名稱管理體系會有效地把它作為私人變數。
這樣就有一個慣例,如果某個變數只想在類或對象中使用,就應該以單底線首碼。而其他的名稱都將作為公用的,可以被其他類/對象使用。記住這隻是一個慣例,並不是Python所要求的(與雙底線首碼不同)。
同樣,注意__del__
方法與 destructor 的概念類似。
繼承:
class
Teacher
(SchoolMember):
'''Represents a teacher.'''
def
__init__
(self, name, age, salary):
SchoolMember.__init__(self, name, age)
self.salary = salary
print
'(Initialized Teacher: %s)'
% self.name
def
tell
(self):
SchoolMember.tell(self)
print
'Salary: "%d"'
% self.salary
輸入輸出:
檔案:
你可以通過建立一個file
類的對象來開啟一個檔案,分別使用file
類的read
、readline
或write
方法來恰當地讀寫檔案。對檔案的讀寫能力依賴於你在開啟檔案時指定的模式。最後,當你完成對檔案的操作的時候,你調用close
方法來告訴Python我們完成了對檔案的使用。
f =
file
(
'poem.txt'
,
'w'
)
# open for 'w'riting
f.write(poem)
# write text to file
f.close()
# close the file
儲存空間:
Python提供一個標準的模組,稱為pickle
。使用它你可以在一個檔案中儲存任何Python對象,之後你又可以把它完整無缺地取出來。這被稱為 持久地 儲存對象。
import
cPickle
as p
#import pickle as p
shoplist = [
'apple'
,
'mango'
,
'carrot'
]
# Write to the file
f =
file
(shoplistfile,
'w'
)
p.dump(shoplist, f)
# dump the object to a file
f.close()
# Read back from the storage
f =
file
(shoplistfile)
storedlist = p.load(f)
異常:
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)
finally:
print
'No exception was raised.'
標準庫,and more others