python小结_python简单小结
筆者對于python常用的語法知識做了小結,不是很全面,希望能給各位帶來幫助。
1.同一級代碼的縮進必須保持一致,需要縮進的位置使用“:”
2.raw_input函數(shù) eg:name=raw_input('input your name:')
3.import函數(shù)用于引入庫?? eg:import math;math.cos(0.5)
4.python的數(shù)據(jù)類型:
(1)數(shù)字:????? '%x'十六進制 '%o'八進制 '19+2j'表示復數(shù)
(2)相關運算符
(3)字符串概述: \n \t '\'用于打印轉義字符? 相關字符串操作函數(shù)。
str[1:-1] 表示從第二個到最后一個,不包括最后一個。
字符串的拼接可以直接使用加號 '3'+'4'='34'。
(4)列表和元組: 列表是以方括號“[]”包圍的數(shù)據(jù)集合,不同成員之間以","分隔。列表的元素可以是任何的類型,通過序號訪問其中的值。range(1,6)可用于
產(chǎn)生包含整數(shù)1到5的列表,注意是5不是6。
元組是以圓括號“()”包圍的數(shù)據(jù)集合,元組的元素一旦確立就不能被改變。
python提供了關于列表操作的強大支持,有很多相關的函數(shù)。
(5)字典:????? 字典是python中比較特別的數(shù)據(jù)類型,以“{}”包圍的數(shù)據(jù)集合。字典與列表的最大不同是字典是無序的,在字典中通過“鍵”來訪問成員。字典是可
變的,可以包含任何其他的類型。字典中的成員是以“鍵:值”的形式來聲明的。
(6)文件:????? 用到在看吧。
5.python基本語句
(1) if語句: if :????????????? 比較運算符:a==b a!=b a>=b a<=b a>b a
elsif:??????????? if語句可以嵌套。
else:
(2)for語句: for <> in :?? 注意:else語句塊是與for語句對應的,注意縮進。
if :
break
if :?????????? for語句中的對象集合可以是列表,元組和字典。常用的是使用range函數(shù)產(chǎn)生整數(shù)列表完成計數(shù)循環(huán)。
continue
else:
(3)while語句: while:????????? while語句只有在測試語句為假時,循環(huán)才會停止。while語句同樣有一個可選的else語句,如果while沒有被break終止,
if:?????????? 就會執(zhí)行else語句塊。
break
if:
continue
???????????? 與for相似,else語句與while相對應,注意縮進。
else:
6.python函數(shù)與模塊? 所有的python函數(shù)必須先聲明,才能在腳本中使用。
a.函數(shù)
(1)函數(shù)聲明:使用def語句可以聲明一個函數(shù),完整的函數(shù)是由函數(shù)名,參數(shù)以及函數(shù)實現(xiàn)語句組成的。函數(shù)中也要使用縮進來表示函數(shù)體,如果函數(shù)用返回值,使用
return返回需要的值。
格式:def (參數(shù)列表):
return
其中參數(shù)列表和返回值不是必須的。
(2)函數(shù)調用:函數(shù)調用的方式與c相同。
b.函數(shù)中的參數(shù)
(1)參數(shù)默認值:python可以在函數(shù)聲明時,將參數(shù)聲明成一個默認的值。如果調用時不給出參數(shù),就使用默認的參數(shù)。python中還可以聲明一個具有任意個參數(shù)的函數(shù)。
(2)參數(shù)的傳遞:參數(shù)的傳遞是嚴格按照聲明時的順序進行的;python還提供了另外一種按照參數(shù)名進行傳遞的方式;同時存在時順序傳遞的方式要在按參數(shù)之前。
(3)可變長參數(shù):聲明一個可變長參數(shù)的函數(shù)只需以“*”開頭定義一個參數(shù)即可。
eg: def mylistappend(*list):
l=[];
for i in list:
l.extend(i)
return l
(4)參數(shù)引用:在python中,在參數(shù)中使用可變對象,可以達到改變參數(shù)的目的。
整數(shù)是不可改變對象,列表是可改變對象。
c.作用域
python作用域分為內(nèi)置作用域,全局作用域和局部作用域。除非用以上提到的參數(shù)應用方法,函數(shù)內(nèi)的操作不會改變函數(shù)外的變量。而在函數(shù)內(nèi)想要使用函數(shù)外的變量要使用global關鍵字。
eg:def fun(x):
global a
return a+x
結果:
...
>>>a=5
>>>fun(3)
8
d.lambda表達式
lambda表達式可以聲明一個匿名函數(shù),使用形式如下:
lambda 參數(shù)列表:表達式
eg: >>>fun=lambda x:x*x+x
>>>fun(2)
6
>>>def show(x):
...??? print 'lambda'*x
...
>>>funn=lambda x:show(x)
>>>funn(2)
lambdalambda
f.模塊 python中的模塊是包含函數(shù)和其他語句的python腳本文件,它以".py"為后綴名。
(1)模塊概述:導入模塊:使用以下兩種方式導入:
import 模塊名
from 模塊名 import 函數(shù)名?? from strings import *(表示導入模塊中的所有函數(shù))。
注:可以利用reload重新載入模塊。該模塊事先必須已經(jīng)被導入。
編寫一個模塊:模塊中寫入函數(shù)與變量,引用方式為"模塊名.函數(shù)名/變量名" eg:mymodule.show()
模塊查找路徑:linux相關的內(nèi)容
模塊編譯:將".py"文件編譯為".pyc"文件。
模塊獨立運行—————_name_屬性:如果python腳本以模塊被導入,其_name_屬性被設置為模塊名;如果單獨運行,_name_屬性被設置為"_main_"可以
以此來判斷模塊的運行狀態(tài)。
dir()函數(shù):利用dir()函數(shù)獲得當前腳本的名字列表。
(2)模塊包:包可以看作是處于同一目錄中的模塊。在包的每一個目錄里都必須包含一個名為"_init_.py"的空文件。
7.面向對象的python
a.概述:
(1)類和對象:
類是面向對象程序設計的基礎。類具有抽象性,封裝性,繼承性和多態(tài)性。
類的抽象性是指類是對具有共同方法和屬性的一類對象的描述。
類的封裝性是指類將屬性和方法封裝,對于外部其是不可見的,只有通過類提供的接口才能與屬于類的實例對象進行數(shù)據(jù)交換。
類的繼承性是指類可以由已有的類派生。派生出來的類擁有父親的方法和屬性。
類的多樣性是指類可以根據(jù)不同的參數(shù)類型調用不同的方法。python在這個方面做的還很好。
每個類都有自己的屬性和方法。類的屬性就是指類的內(nèi)部定義的變量,類的方法是指內(nèi)部定義的函數(shù)。
對象是具體的事物,是實例化后的類。
b.類的基礎:
(1)類的定義:
類的定義使用的class語句,在定義類時,也要采用縮進的語句表示屬于該類。
eg:class:
...
類的定義一般放在腳本文件的頭部,也可以定義在if語句中或者函數(shù)里。
類還可以通過繼承的形式獲得:
eg:class(父親名):
?? #可用與定義新的屬性
...
類內(nèi)部的名字空間與函數(shù)類似屬于局部作用域。
eg:>>>class human:
...?? age=0
...?? name=''
...?? sex=''
...
>>>class stu(human):
...?? school=''?? #定義了新的類屬性。
...?? grade=0
...
(2)類的使用
類的定義必須先實例化后才能夠使用,用法與函數(shù)類似。
eg:>>>class book:
...?? name=''
...?? author=''
...?? pages=0
...?? price=0
...
>>>a=book()?????? #對于類的使用
>>>a.name
''
>>>a.name='the byte of python'
>>>a.name
the byte of python
在python中特別的是,實際創(chuàng)建一個類后就可以通過類名訪問其中的屬性。
c.類的屬性和方法
(1)類的屬性 類的公有屬性和私有屬性
類的私有屬性在類的外部不能更改。在python中,類中的屬性以兩條下劃線開始的話為私有屬性。
eg:>>> class human:
...??? name=''
...??? sex=''
...??? _love='zq'
...
>>> c=human()
>>> c._love
'zq'
>>> c._love='zhouqi'
>>> c._love
'zhouqi'
>>> class stu(human):
...??? __lover='zhouxiaoqi'
...
>>> b=stu()
>>> b.__lover
Traceback (most recent call last):
File "", line 1, in
AttributeError: stu instance has no attribute '__lover'
>>>
訪問私有屬性會報錯。想要獲取或者修改私有屬性的值,要使用到類的方法。
(2)類的方法 類的方法實際上就是類內(nèi)部使用def關鍵字定義的函數(shù)。特別的是類的方法必須包含參數(shù)self,且self必須是第一個參數(shù)。
與類的屬性相似,類的方法也分為類的公有方法和類的私有方法,類的私有方法名同樣以兩個下劃線開頭,在類的內(nèi)部調用使用"self.私有方法名"的格式
類的專有方法:在python中有一類以兩條下劃線開始又以兩條下劃線結束的方法稱之為類的專用方法。
eg:>>> class book:
...??? __author=''
...??? __name=''
...??? __page=0
...??? price=0
...??? __press=''
...??? def __check(self,item):
...??????? if item == '':
...??????????? return 0
...??????? else:
...??????????? return 1
...??? def show(self):
...??????? if self.__check(self.__author):
...??????????? print self.__author
...??????? else:
...??????????? print 'no vaule'
...??????? if self.__check(self.__name):
...??????????? print self.__name
...??????? else:
...??????????? print 'no vaule'
...??? def __init__(self,author,name):
...??????? self.__author=author
...??????? self.__name=name
...
>>> a=book('zhouqi','the byte of python')
>>> a.show
>
>>> a.show()
zhouqi
the byte of python
(3)類的繼承
通過繼承創(chuàng)建類時有一個問題要注意:新類可以繼承父親的公有屬性和方法,不能繼承私有屬性和方法。在新類中調用會造成錯誤。
多重繼承:是指創(chuàng)建的類有多個類的屬性和方法,一般形式如下:
>>>class 新類名(父親名1,父親名2.....)
...
注意對于父親中有重名的情況的處理。
eg:>>>class C(A,B)? #假設A,B中定義了show方法
show=B.show?????????? #可用這種形式來指定,與C++不同。
(4)重載
重載允許通過繼承而創(chuàng)建的類重新定義父親的方法。
方法重載:在新類中創(chuàng)建相同名字的函數(shù),并在函數(shù)中以"父親.方法"的形式調用父親的方法。
運算符重載:python中有固定的函數(shù)。
亮點代碼: def __init__(self,*arg):
self.__mylist = []
for arg in args:
self.__mylist.append(arg)
def __add__(self,n):? #重載 + 運算符
for i in rang(0,len(self.__mylist)):
self.__mylist[i]=self.__mylist[i]+n
8 異常與調試
a.常見的異常有除零,和下標越界等。
b.使用pdb調試python腳本:
pdb模塊可以通過import語句導入。pdb模塊的函數(shù)可以分為以下幾類:
(1)運行語句:
利用run函數(shù)來調試語句塊:
eg:>>> import pdb
>>> pdb.run('''for i in range(0,3):
...??????????????? i=i**2
...??????????????? print i
...???????? ''')
> (1)()
(Pdb) n
> (2)()
(Pdb) n
> (3)()
(Pdb) n
0
> (1)()
(Pdb) n
> (2)()
(Pdb) n
> (3)()
(Pdb) n
1
> (1)()
(Pdb)
> (2)()
(Pdb) n
> (3)()
(Pdb) n
4
> (1)()
(Pdb) print i
4
(Pdb) n
--Return--
> (1)()->None
(Pdb)
(2)運行表達式:在python中可以使用pdb模塊的runeval函數(shù)來調試表達式。
eg:>>> import pdb
>>> l=[1,2,3]
>>> pdb.runeval('l[1]')
> (1)()
(Pdb) n
--Return--
> (1)()->2
(Pdb) n
2
>>> pdb.runeval('3+5*6/2')
> (1)()->2
(Pdb) n
--Return--????????????????????????????? #return指的是什么?
> (1)()->18
(Pdb) n
18
>>>
(3)運行函數(shù):在python中可以用pdb模塊的runcall來調試函數(shù)
eg:>>> import pdb
>>> def sum(*args):
...???? r=0
...???? for arg in args:
...???????? r=r+arg
...???? return r
...
>>> pdb.runcall(sum,1,2,3,4)
> (2)sum()
(Pdb) n
> (3)sum()
(Pdb) n
> (4)sum()
(Pdb) n
> (3)sum()
(Pdb) print r
1
(Pdb) n
> (4)sum()
(Pdb) print r
1
(Pdb) n
> (3)sum()
(Pdb) print r
3
(Pdb) n
> (4)sum()
(Pdb) n
> (3)sum()
(Pdb) print r
6
(Pdb)
(4)設置硬斷點? 在python中可以使用pdb模塊的set_trace函數(shù)在腳本中設置硬斷點。set_trace函數(shù)一般在".py"文件中使用。
eg:利用gedit編寫以下程序:
import pdb
pdb.set_trace()
for i in range(0,5):
i=i*5
print i
在主目錄中存為import.py
zd@zd:~$ python import.py
> /home/zd/import.py(3)()
-> for i in range(0,5):
(Pdb) n
> /home/zd/import.py(4)()
-> i=i*5
(Pdb) n
> /home/zd/import.py(5)()
-> print i
(Pdb) n
0
> /home/zd/import.py(3)()
-> for i in range(0,5):
(Pdb) continue
5
10
15
20
總結
以上是生活随笔為你收集整理的python小结_python简单小结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 每列大于0的个数_题目1342——把一个
- 下一篇: python怎么让游戏倒计时_Pytho