Python 學習總結

2021-06-23 00:23:55 字數 4765 閱讀 4683

資料型別:

python 中的基本資料型別有:數字,字串,布林值以及空值

想使自己的**支援中文在python **的檔案頭加上

# -×- coding:utf-8 -×-

python中的高階資料結構包括:list,tuple,dict和set

list:有序集合,可以任意新增和刪除其中的元素

定義:list=['a','b']

tuple:有序集合,但進行過初始化後就不能改變其中的元素的值,也不能進行新增和刪除

定義:tuple=('a','b')

dict:使用一對一的鍵值儲存,具有極快的查詢速度

定義:dict=

set:一組沒有重複的key 的組合,但不儲存value

定義:s=set([1,2,3])

判斷和迴圈語句:

if condition:

pass

elif condition:

pass

else:

pass

if語句從上向下判斷,如果乙個語句被判斷為true,則不會執行剩下的語句。

迴圈分為兩種:

一中是for...in...迴圈,依次把list或者tuple的每個元素迭代出來

for x in range(100):

pass

一種是while迴圈:

while condition:

pass

函式:定義:

def function(argv='abc'): #如果沒有給argv賦值,則採用'abc'這個預設值

pass

返回多值:

def function(argv,argv):

return x,y

x,y = function(argv,argv)

但其實返回的是乙個tuple,可以省略括號,多個變數可以接收乙個tuple,按順序賦給對應的值。

可變引數:

def function(*numbers):

pass

其實傳進函式的是乙個tuple,進入函式之後再用for 迴圈進行分解。

在向可變引數的函式傳遞list或者tuple的時候如下加乙個星號:

nums = [1,2,3]

function(*nums)

關鍵字引數:

關鍵字引數允許傳入0個或者任意個引數名的引數,這些關鍵字引數,在函式的內部自動組成乙個dict

定義:def person(name,age,**kw):

print 'name:',name,'age:',age,'other:',kw

#kw引數也傳進來乙個鍵值對。

在python的函式定義中,可以必選引數,預設引數,可變引數和關鍵字引數四種引數型別一起使用。或者只用其中的一些。但是,引數的定義順序必須是,必選引數,預設引數,可變引數以及關鍵字引數。

如:def func(a,b,c=0,*argv,**kw):

總結:*argv 是可變引數,接收的是乙個tuple,**kw是關鍵字引數,接收的是乙個dict。

高階特性:

for 迴圈可以同時使用兩個甚至多個變數,例如dict的iteritems()可以同時迭代key和value.

d =

for k,v in d.iteritems()

print k , '=', v

使用內建的isinstance函式可以判斷乙個變數的型別

isinstance(x,str/int)

函式式程式設計:

高階函式:

map(),reduce(),sorted(),reversed_cmp()

匿名函式:

lambda x:

pass

關鍵字lamba表示匿名函式,冒號前面的x表示函式引數。

匿名函式只能有乙個表示式,並且不用寫return,返回值就是該表示式的結果。

使用匿名函式有個好處,因為函式沒有名字,所以不用擔心函式名衝突。

f=lambda x: x*x

print f(5)

#python 對匿名函式支援有限,盡量只在一些簡單的情況下使用。

裝飾器:

@log

deg f():

pass

def log(func):

def decorator(func):

pass

return func()

return decorator

主要是為了許可權認證以及日誌的列印

模組:物件導向程式設計:

類的定義:

class 類名():

def func():

pass

類中的方法和普通的函式只有一點不同,那就是第乙個引數永遠是self,並且呼叫時不用傳遞該引數

訪問限制:

類似__name,__score 的是私有變數,在類外不能直接訪問

類似__name__的是類內建的特殊變數,在類外是可以直接訪問的

繼承和多型:

一般類全部繼承自object

class animal(object):

pass

class person(object):

pass

一般繼承的定義:

class dog(animal):

pass

同樣可以從多個類進行繼承:

class mary(dog,person):

pass

所有的子類自動繼承了父類所有的方法,也可以對這些方法進行重寫覆蓋。

而判斷乙個例項是否是某個型別同樣可以使用isinstance 進行判斷

isinstance(harry,dog)

也可以使用type()函式,進行判斷

使用getattr(),setattr(),hasattr()函式我們可以直接操作乙個例項的狀態。例如:

class myobject(object):

def __init__(self):

self.x=9

def power(self):

return self.x * self.x

obj = myobject()

hasattr(obj,'x')#判斷是否具有x屬性

setattr(obj,'x',19)#將x屬性設定為19

y = getattr(obj,'x')#獲取屬性x

如果試圖獲取不存在的屬性將會丟擲attributeerror的錯誤

上述函式不僅可以獲取例項的屬性,而且可以獲取例項的方法

hasattr(obj,'power')

getattr(obj,'power')

可以在例項建立之後給例項增加屬性或者方法,但是增加的屬性和方法對其他例項是不起作用的。

mary = myobject()

mary.name = 'mary' #增加了乙個name的屬性

def set_age(self,age)

self.age = age

from types import methodtype

mary.set_age = methodtype(set_age,mary,myobject)#給例項增加了乙個方法

如果我們想要限制類可以增加的屬性可以使用__slots__屬性

class student(object):

__slots__ = ('name','age')

這樣student類的例項可以增加name 和age 屬性。但是__slots__是不可以繼承的,在子類中必須要重新定義。

使用@property

property有兩種方法,setter()和getter(),使用property則預設呼叫了getter(),而setter()則是可選的。

定義方法:

在getter()函式塊上註明@property

而在setter()函式塊上註明@函式名.setter,如:

class student(object):

@property

def birth(self):

return self._birth

@birth.setter

def birth(self,value):

self._birth = value

@property

def age(self):

return 2014 - self._birth

birth 是可讀寫操作,而age只是乙個唯讀操作

類裡面可以定製的方法:

__str__,用來列印例項內的字串

__iter__,使類可以用於for..in..迴圈

__getitem__,_getattr__,__call__

錯誤處理:

try:

要執行的語句塊

except 錯誤型別:

對錯誤進行處理的語句

呼叫堆疊:

如果錯誤沒有**獲,他就會一直往上拋,最後被python直譯器捕獲,列印乙個錯誤資訊。然後程式退出。

一般出錯的根源在錯誤資訊的最後一行。

記錄錯誤:

python 內建的logging模組可以用來記錄錯誤資訊。並且在列印完錯誤資訊以後程式依舊會繼續執行。

資訊的級別:debug,info,warning,error

丟擲錯誤:

使用raise語句來丟擲錯誤。

try:

10/0

except zerodivisionerror:

raise valueerror('input error!')

資料庫操作:

總結自:  (乙個比較好的python 教程)

python學習總結

那我們先來認識一下python。python首先是一門計算機語言 是集編譯性和解釋性一身的語言。python目前在做科學計算中特別受歡迎,說到計算,我們不得不提matlab,就我個人而言,matlab,我已經接觸這麼語言4年多了,我也十分的偏愛它,可是matlab是收費的,相比而言,python是免...

Python學習總結

當前使用python語言即使寫乙個for迴圈都要查資料,實屬不該。後續把學習的東西持續總結在這裡,讓自己印象更深刻一些。stata statb startc 這三行會當成乙個語句進行執行 this is a single line remark this is multiple lines rema...

python學習總結

py檔案模組匯入 假設我src下有test.py和util資料夾,util裡有fileclass,fileclass裡有方法writeline,我要在test.py呼叫fileclass裡的writeline方法.有以下3種引入方式 方式1 from util.fileclass import wr...