python的一些學習

python 數據類型

一、number類型

類型

1、整型(integer)
2、長整型(long integer)
3、布爾類型(booleam)
4、雙精度浮點型(double-precision floating)
5、複數(complex number)

操作符
操作符 說明
+
-
*
/
%
內置函數

1、通用函數(既適合數值類型也適合其他類型)

函數 說明
cmp(A,B) 比較二者大小,前者大返回1,前者小返回-1,相等返回0
str(A) 將參數轉化爲字符
type(A) 判斷參數的類型
bool(A) 將參數轉換爲布爾類型
int(A) 將參數轉換爲整數類型,以十進制表示
long(A) 將參數轉換爲長整型,以十進制表示
float(A) 將參數轉換爲浮點類型
complex(A) 將參數轉換爲複數類型

2、數值類型的特定函數

函數 說明
abs(A) 取絕對值
coerce(A,B) 將A和B轉換成一個類型,並生成一個元組
divmod(A,B) 除模操作,生成一個元祖,形式爲(A/B,A%B)
pow(A,B) 冪操作,結果爲A的B次方
round(A) 返回參數的四捨五入結果
hex(A) 將A轉換爲十六進制的字符串
oct(A) 將A轉換爲八進制的字符串
bin(A) 將A轉換爲二進制的字符串
chr(A) 將A轉換成ASCII字符,要求0<

二、序列類型

操作符
操作符 說明
$
內置函數
函數 說明
enumerate(A) 對序列A生成一個可枚舉的對象,對象中的每個元素是一個二元組,遠足內容爲(index,item)即(索引號,序列元素)
len(A) 求A序列的長度
list(A) 轉換爲List類型
max(a,b,c…..) 返回所有參數中最大的元素
min(A) A是一個序列,返回A中最大的元素
min(a,b,c,d,….) 返回所有參數中最小的元素
reversed(A) 生成A的反序列,使用list(reversed(A))打印
sorted(A,func=Noe,key=Noe,reverse=False) 對A排序,排序規則按照參數fun、key、reverse指定的規則進行
sum(A,init=0) 對A中的元素求和
tuple(A) 轉換爲tuple類型

三、字符串類型

字符串格式化
內置函數
函數 說明
capitalize() 將字符串中的第一個字符大寫
center(width) 返回一個長度爲width的字符串,並使原字符串的內容居中
count(str,beg=0,end=len(string)) 返回str在string裏面出現的次數,可以用開始索引(beg)和結束索引(end)指定搜索的範圍
decode(encoding=’UTF-8’,errors=’strict’) 以encoding指定的編碼格式解碼
encode(encoding=’UTF-8’,errors=’strict’) 以encoding指定的編碼格式編碼
endswith=(obj,beg=0,end=olen(string)) 檢查字符串是否以obj結束,如果是,則返回True,否則返回Flase,可以用開始索引(beg)和結束索引(end)指定搜索的範圍
expandtabs(tabsize=8) 把字符串string中的Tab符號轉換爲空格,默認的空格數是tabsize
find(str,beg=0,end=len(string)) 檢測str是否包含在string中;可以用開始索引(beg)和結束索引(end)指定搜索的範圍。找到返回索引值,找不到則返回-1
index(str,beg=0,end=len(string)) 如果str在string中,則返回str的索引,如果str不在string中,則報一個異常。
isalnum() 如果返現有一個字符並且所有字符都是字母或數字,則返回True,否則返回False
isalpha() 如果發現有一個字符並且所有字符都是字母,則返回True,否則返回False
isdecimal() 如果可解釋爲十進制數字,則返回True,否則返回False
isdigit() 如果可解釋爲數字,則返回True,否則返回Flase
islower() 如果字符串中的字符都是小寫,,則返回True,否則返回Flase
isnumeric() 如果只包含數字字符,則返回True,否則返回Flase
isspace() 如果字符串是空格,則返回True,否則返回Flase
istitle() 如果字符串是標題化的,則返回True,否則返回Flase
isupper() 如果字符串中的字符都是大寫的,則返回True,否則返回Flase
ljust(width) 返回一個原字符串左對齊,並使用空格填充至長度width的新字符串
rjust(width) 返回一個原字符串右對齊,並使用空格填充至長度width的新字符串
lstrip() 截掉string左邊的空格
rstrip() 截掉字符串末尾邊的空格
strip() 在字符串上執行rstrip()和lsrip()
lower() 轉換所有大寫字符爲小寫
upper() 轉換所有小寫字符爲大寫
replace(str1,str2,num=count(str1)) 把string中str1替換成str2,num指定替換的最大次數
rfind(str,beg=0,end=len(string)) 類似於find(),但是從右邊開始查找
rindex(str,beg=0,end=len(string)) 類似於index(),但是從右邊開始查找
expandtabs()
splitlines()
  • 所有字符串類型的內置函數
string.capitalize  string.format      string.isupper     string.rindex      string.strip
string.center      string.index       string.join        string.rjust       string.swapcase
string.count       string.isalnum     string.ljust       string.rpartition  string.title
string.decode      string.isalpha     string.lower       string.rsplit      string.translate
string.encode      string.isdigit     string.lstrip      string.rstrip      string.upper
string.endswith    string.islower     string.partition   string.split       string.zfill
string.expandtabs  string.isspace     string.replace     string.splitlines  
string.find        string.istitle     string.rfind       string.startswith  
格式化符號表
格式化符號 解釋
%c 轉換單個字符
%r 轉爲用repr()函數表達的字符串
%s 轉爲用str()函數表達的字符串
%d or %i
%o
%x
%X
%e
%E
%f or %F
%g
%G
%%
輔助格式化符號
輔助格式化符號 解釋
*
-
+
< spr >
#
0
m.n
轉義字符解釋
轉義字符 解釋
\a
\b
\f
\n
\r
\t
\v
\|
\’
\”
\?
\0

四、Tuple類型

元組類型是一個特殊的序列類型,用圓括號表示,一旦定義就不可修改,操作比列表類型快,如果有一個常量集只用來讀,則可以元組類型定義

五、列表類型

列表用[]定義,可以增刪改查

內置函數

l

list=['ad','asd','ew']
list.append()   list.extend()   list.insert()   list.remove()   list.sort()     
list.count()    list.index()    list.pop()      list.reverse()  

六、集合類型(set 類型)

set類型即集合,用以表示相互之間無序的一組對象,集合在算術上的運算包括並集,交集,補集等,python中的集合分爲兩種類型:普通集合和不可變集合。普通集合在初始化後支持並集,交集,補集等運算,而不可變集合初始化後就不能變化了

定義

python中用set和frozenset關鍵字定義普通集合和不可變集合,初始化集合內容的方法是向其傳入序列類型簇的變量

In [24]: list=['feaf']
In [25]: sample=set(list)
In [26]: sample
Out[26]: {'feaf'}
In [27]: print(sample)
set(['feaf'])
內置函數
set.add                          set.intersection                 set.remove
set.clear                        set.intersection_update          set.symmetric_difference
set.copy                         set.isdisjoint                   set.symmetric_difference_update
set.difference                   set.issubset                     set.union
set.difference_update            set.issuperset                   set.update
set.discard                      set.pop                          
集合操作符
操作符 解釋
in
not in
!=
<
<=
>
>=
&
|
-
^
|=
&=
_=
^=

七、字典類型

字典類型即字典,代表一個鍵值存儲庫,工作方式想映射表,是python中唯一表示映射關係的類,所以其有自己都有的定義和操作方式

定義
dict={'name':'bob','age':25,'sex':'man'}
內置函數
dict.clear       dict.get         dict.iteritems   dict.keys        dict.setdefault  dict.viewitems
dict.copy        dict.has_key     dict.iterkeys    dict.pop         dict.update      dict.viewkeys
dict.fromkeys    dict.items       dict.itervalues  dict.popitem     dict.values      dict.viewvalues

python正則表達式

正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配。
Python 自1.5版本起增加了re 模塊,它提供 Perl 風格的正則表達式模式。
re 模塊使 Python 語言擁有全部的正則表達式功能。
compile 函數根據一個模式字符串和可選的標誌參數生成一個正則表達式對象。該對象擁有一系列方法用於正則表達式匹配和替換。
re 模塊也提供了與這些方法功能完全一致的函數,這些函數使用一個模式字符串做爲它們的第一個參數。

python中re模塊

re中的函數
In [8]: re.
re.DEBUG        re.L            re.S            re.U            re.compile      re.findall      re.search       re.sub          
re.DOTALL       re.LOCALE       re.Scanner      re.UNICODE      re.copy_reg     re.finditer     re.split        re.subn         
re.I            re.M            re.T            re.VERBOSE      re.error        re.match        re.sre_compile  re.sys          
re.IGNORECASE   re.MULTILINE    re.TEMPLATE     re.X            re.escape       re.purge        re.sre_parse    re.template     
重點介紹幾個函數

1、re.match函數
re.match 嘗試從字符串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就返回none。

re.match(pattern, string, flags=0)

函數參數說明:
參數 描述
pattern 匹配的正則表達式
string 要匹配的字符串。
flags 標誌位,用於控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等等。參見:正則表達式修飾符 - 可選標誌

2、re.search方法
re.search 掃描整個字符串並返回第一個成功的匹配。

re.search(pattern, string, flags=0)

re.match與re.search的區別
re.match只匹配字符串的開始,如果字符串開始不符合正則表達式,則匹配失敗,函數返回None;而re.search匹配整個字符串,直到找到一個匹配。

3、re.sub方法
re.sub用於替換字符串中的匹配項。

re.sub(pattern, repl, string, count=0, flags=0)

參數:

pattern : 正則中的模式字符串。
repl : 替換的字符串,也可爲一個函數。
string : 要被查找替換的原始字符串。
count : 模式匹配後替換的最大次數,默認 0 表示替換所有的匹配。
4、re.compile 函數
compile 函數用於編譯正則表達式,生成一個正則表達式( Pattern )對象,供 match() 和 search() 這兩個函數使用。

re.compile(pattern[, flags])

參數:
pattern : 一個字符串形式的正則表達式
flags : 可選,表示匹配模式,比如忽略大小寫,多行模式等,具體參數爲:

re.I 忽略大小寫
re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依賴於當前環境
re.M 多行模式
re.S 即爲 . 並且包括換行符在內的任意字符(. 不包括換行符)
re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依賴於 Unicode 字符屬性數據庫
re.X 爲了增加可讀性,忽略空格和 # 後面的註釋

5、re.findall方法
在字符串中找到正則表達式所匹配的所有子串,並返回一個列表,如果沒有找到匹配的,則返回空列表。
注意: match 和 search 是匹配一次 findall 匹配所有。

re.findall(pattern,string, flags)

參數
pattern 匹配的正則表達式
string 要匹配的字符串。
flags 標誌位,用於控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等等。參見:正則表達式修飾符 - 可選標誌

或者:

pattern = re.compile() 
pattern.findall(string, pos, endpos)

參數:
string : 待匹配的字符串。
pos : 可選參數,指定字符串的起始位置,默認爲 0。
endpos : 可選參數,指定字符串的結束位置,默認爲字符串的長度。

6、re.finditer
和 findall 類似,在字符串中找到正則表達式所匹配的所有子串,並把它們作爲一個迭代器返回。

re.finditer(pattern, string, flags=0)

參數:
pattern 匹配的正則表達式
string 要匹配的字符串。
flags 標誌位,用於控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等等。參見:正則表達式修飾符 - 可選標誌
7、re.split方法
split 方法按照能夠匹配的子串將字符串分割後返回列表,它的使用形式如下:

re.split(pattern, string[, maxsplit=0, flags=0])

參數 描述
pattern 匹配的正則表達式
string 要匹配的字符串。
maxsplit 分隔次數,maxsplit=1 分隔一次,默認爲 0,不限制次數。
flags 標誌位,用於控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等等。參見:正則表達式修飾符 - 可選標誌

正則表達式對象

1、re.RegexObject
re.compile() 返回 RegexObject 對象。
2、re.MatchObject
group() 返回被 RE 匹配的字符串。

start() 返回匹配開始的位置
end() 返回匹配結束的位置
span() 返回一個元組包含匹配 (開始,結束) 的位置

實例:

>>>import re
>>> pattern = re.compile(r'([a-z]+) ([a-z]+)', re.I)   # re.I 表示忽略大小寫
>>> m = pattern.match('Hello World Wide Web')
>>> print m                               # 匹配成功,返回一個 Match 對象
<_sre.SRE_Match object at 0x10bea83e8>
>>> m.group(0)                            # 返回匹配成功的整個子串
'Hello World'
>>> m.span(0)                             # 返回匹配成功的整個子串的索引
(0, 11)
>>> m.group(1)                            # 返回第一個分組匹配成功的子串
'Hello'
>>> m.span(1)                             # 返回第一個分組匹配成功的子串的索引
(0, 5)
>>> m.group(2)                            # 返回第二個分組匹配成功的子串
'World'
>>> m.span(2)                             # 返回第二個分組匹配成功的子串
(6, 11)
>>> m.groups()                            # 等價於 (m.group(1), m.group(2), ...)
('Hello', 'World')
>>> m.group(3)                            # 不存在第三個分組
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: no such group

python os模塊

os 模塊提供了非常豐富的方法用來處理文件和目錄。常用的方法如下表所示:

1
os.access(path, mode)
檢驗權限模式

2
os.chdir(path)
改變當前工作目錄

3
os.chflags(path, flags)
設置路徑的標記爲數字標記。

4
os.chmod(path, mode)
更改權限

5
os.chown(path, uid, gid)
更改文件所有者

6
os.chroot(path)
改變當前進程的根目錄

7
os.close(fd)
關閉文件描述符 fd

8
os.closerange(fd_low, fd_high)
關閉所有文件描述符,從 fd_low (包含) 到 fd_high (不包含), 錯誤會忽略

9
os.dup(fd)
複製文件描述符 fd

10
os.dup2(fd, fd2)
將一個文件描述符 fd 複製到另一個 fd2

11
os.fchdir(fd)
通過文件描述符改變當前工作目錄

12
os.fchmod(fd, mode)
改變一個文件的訪問權限,該文件由參數fd指定,參數mode是Unix下的文件訪問權限。

13
os.fchown(fd, uid, gid)
修改一個文件的所有權,這個函數修改一個文件的用戶ID和用戶組ID,該文件由文件描述符fd指定。

14
os.fdatasync(fd)
強制將文件寫入磁盤,該文件由文件描述符fd指定,但是不強制更新文件的狀態信息

15
os.fdopen(fd[, mode[, bufsize]])
通過文件描述符 fd 創建一個文件對象,並返回這個文件對象

16
os.fpathconf(fd, name)
返回一個打開的文件的系統配置信息。name爲檢索的系統配置的值,它也許是一個定義系統值的字符串,這些名字在很多標準中指定(POSIX.1, Unix 95, Unix 98, 和其它)。

17
os.fstat(fd)
返回文件描述符fd的狀態,像stat()。

18
os.fstatvfs(fd)
返回包含文件描述符fd的文件的文件系統的信息,像 statvfs()

19
os.fsync(fd)
強制將文件描述符爲fd的文件寫入硬盤。

20
os.ftruncate(fd, length)
裁剪文件描述符fd對應的文件, 所以它最大不能超過文件大小。

21
os.getcwd()
返回當前工作目錄

22
os.getcwdu()
返回一個當前工作目錄的Unicode對象

23
os.isatty(fd)
如果文件描述符fd是打開的,同時與tty(-like)設備相連,則返回true, 否則False。

24
os.lchflags(path, flags)
設置路徑的標記爲數字標記,類似 chflags(),但是沒有軟鏈接

25
os.lchmod(path, mode)
修改連接文件權限

26
os.lchown(path, uid, gid)
更改文件所有者,類似 chown,但是不追蹤鏈接。

27
os.link(src, dst)
創建硬鏈接,名爲參數 dst,指向參數 src

28
os.listdir(path)
返回path指定的文件夾包含的文件或文件夾的名字的列表。

29
os.lseek(fd, pos, how)
設置文件描述符 fd當前位置爲pos, how方式修改: SEEK_SET 或者 0 設置從文件開始的計算的pos; SEEK_CUR或者 1 則從當前位置計算; os.SEEK_END或者2則從文件尾部開始. 在unix,Windows中有效

30
os.lstat(path)
像stat(),但是沒有軟鏈接

31
os.major(device)
從原始的設備號中提取設備major號碼 (使用stat中的st_dev或者st_rdev field)。

32
os.makedev(major, minor)
以major和minor設備號組成一個原始設備號

33
os.makedirs(path[, mode])
遞歸文件夾創建函數。像mkdir(), 但創建的所有intermediate-level文件夾需要包含子文件夾。

34
os.minor(device)
從原始的設備號中提取設備minor號碼 (使用stat中的st_dev或者st_rdev field )。

35
os.mkdir(path[, mode])
以數字mode的mode創建一個名爲path的文件夾.默認的 mode 是 0777 (八進制)。

36
os.mkfifo(path[, mode])
創建命名管道,mode 爲數字,默認爲 0666 (八進制)

37
os.mknod(filename[, mode=0600, device])
創建一個名爲filename文件系統節點(文件,設備特別文件或者命名pipe)。

38
os.open(file, flags[, mode])
打開一個文件,並且設置需要的打開選項,mode參數是可選的

39
os.openpty()
打開一個新的僞終端對。返回 pty 和 tty的文件描述符。

40
os.pathconf(path, name)
返回相關文件的系統配置信息。

41
os.pipe()
創建一個管道. 返回一對文件描述符(r, w) 分別爲讀和寫

42
os.popen(command[, mode[, bufsize]])
從一個 command 打開一個管道

43
os.read(fd, n)
從文件描述符 fd 中讀取最多 n 個字節,返回包含讀取字節的字符串,文件描述符 fd對應文件已達到結尾, 返回一個空字符串。

44
os.readlink(path)
返回軟鏈接所指向的文件

45
os.remove(path)
刪除路徑爲path的文件。如果path 是一個文件夾,將拋出OSError; 查看下面的rmdir()刪除一個 directory。

46
os.removedirs(path)
遞歸刪除目錄。

47
os.rename(src, dst)
重命名文件或目錄,從 src 到 dst

48
os.renames(old, new)
遞歸地對目錄進行更名,也可以對文件進行更名。

49
os.rmdir(path)
刪除path指定的空目錄,如果目錄非空,則拋出一個OSError異常。

50
os.stat(path)
獲取path指定的路徑的信息,功能等同於C API中的stat()系統調用。

51
os.stat_float_times([newvalue])
決定stat_result是否以float對象顯示時間戳

52
os.statvfs(path)
獲取指定路徑的文件系統統計信息

53
os.symlink(src, dst)
創建一個軟鏈接

54
os.tcgetpgrp(fd)
返回與終端fd(一個由os.open()返回的打開的文件描述符)關聯的進程組

55
os.tcsetpgrp(fd, pg)
設置與終端fd(一個由os.open()返回的打開的文件描述符)關聯的進程組爲pg。

56
os.tempnam([dir[, prefix]])
返回唯一的路徑名用於創建臨時文件。

57
os.tmpfile()
返回一個打開的模式爲(w+b)的文件對象 .這文件對象沒有文件夾入口,沒有文件描述符,將會自動刪除。

58
os.tmpnam()
爲創建一個臨時文件返回一個唯一的路徑

59
os.ttyname(fd)
返回一個字符串,它表示與文件描述符fd 關聯的終端設備。如果fd 沒有與終端設備關聯,則引發一個異常。

60
os.unlink(path)
刪除文件路徑

61
os.utime(path, times)
返回指定的path文件的訪問和修改的時間。

62
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
輸出在文件夾中的文件名通過在樹中游走,向上或者向下。

63
os.write(fd, str)
寫入字符串到文件描述符 fd中. 返回實際寫入的字符串長度

python異常處理

python異常處理使用try,catche,else和finally關鍵字來嘗試可能未成功的操作,處理失敗及正常情況以及在事後清理資源

try:
    block_try
except Exception 1:  、、第一種except形式
    block_when_exceptin_1_happen:
except (Exception_1 Exception_2 Exception_3): //第二種except形式
    block_when_exception_1_or_2_or_3_happen
except Exception_5 variance:
    block_when_exception_5_happen
except (Exception_6 Exception_7),variance:
    block_when_exception_6_or_7_happen
except :
    block_for_all_other_exceptions
else:
    block_for_no_exception
finally:
    block_anyway
自定義異常

自定義異常的邊長方法是建立一個繼承子系統異常的子類,並且需要引發該異常時用raise語句跑出異常

一些函數說明

構造函數

構造函數是一種特殊的類成員方法,主要用在創建對象時初始化對象
python中的構造函數用init命名

析構函數

析構函數是構造函數的反函數,在銷燬對象時調用他們,往往用來做清理善後,
例如:數據庫連接對象可以在析構函數中釋放對數據庫實例資源的佔用
python中爲類定義析構函數的方法是在類中定義一個名爲del的沒有返回值和參數的函數
python中顯示銷燬對象的方法,使用del關鍵

靜態函數和類函數

python中支持兩種基於類名訪問成員函數:靜態函數和類函數
不同點:類函數有一個隱形參數cls可以用來獲取類信息
靜態函數使用裝飾器@staicmethod定義
類函數使用裝飾器@classmethod定義

生成器與yield
閉包
裝飾器

裝飾器是將其他函數增強
1、裝飾器本身是一個函數,目的用於裝飾其他函數
2、增強被裝飾函數的功能
3、裝飾器一般接受一個函數對象作爲參數以對其進行功能的增強
4、裝飾器用@deco定義裝飾

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章