Python endswith()
- 用于判斷字元串是否以指定字尾結尾,如果以指定字尾結尾傳回True,否則傳回False。可選參數"start"與"end"為檢索字元串的開始與結束位置
str.endswith(suffix[, start[, end]])
參數
suffi:該參數可以是一個字元串或者是一個元素
start:字元串中的開始位置
end :字元中結束位置
傳回值
如果字元串含有指定的字尾傳回True,否則傳回False
eg:
str = "hello world!!!"
suffix = "ld!!!"
print(str.endswith(suffix)) # true
print(str.endswith(suffix,6)) #true
suffix = "or";
print(str.endswith(suffix, 2, 8)) #true
print str.endswith(suffix, 2, 10); #false
也就是說:
start預設是 0,即從第一個元素開始搜尋,end 預設是字元串/清單等的長度,表示結束搜尋的位置
除法運算
- 在 Python 2.x 中,/ 除法就跟我們熟悉的大多數語言 ,整數相除的結果是一個整數,把小數部分完全忽略掉,浮點數除法會保留小數點的部分得到一個浮點數的結果
- 在 Python 3.x 中 / 除法不再這麼做了,對于整數之間的相除,結果也會是浮點數
對于// python2和3是一樣的,截取整數可以借用math的方法:
import math
math.trunc(1 / 2) # 0
math.trunc(-1 / 2) # 0
python變量傳遞
可變類型,值可以改變
- list,dict 為可變類型
- 可變類型,添加或者修改資料時,變量對應的記憶體位址不會改變。也就是可變類型,一直在引用原來的記憶體位址
- 如果是重新指派,記憶體位址就會發生改變。
- 而del變量名 則隻是删除一個指針,不删除變量。
不可變類型,值不可以改變:
- 數值類型int、long、bool、float,字元串str,元組tuple為不可變類型
- 不可變類型,一旦被重新指派,變量對應的記憶體位址就會發生改變
是以:
- 不可變類型的資料作為實參傳遞, 修改形參不影響實參
- 可變類型的資料作為實參傳遞, 修改形參會導緻實參跟着變化。但是形參指派不會改變實參
re.match
re.match 嘗試從字元串的起始位置比對一個模式,如果不是起始位置比對成功的話,match()就傳回none。
re.match(pattern, string, flags=0)
第一個參數為正規表達式,第二個是字元串,第三個是标志位
搭配使用的是:group
eg:
import re
line = "Cats are smarter than dogs"
# 以are為分割,有兩個比對分組。(.*)表示代表比對除換行符之外的所有字元
#(.*?) 後面多個問号,代表非貪婪模式,也就是說隻比對符合條件的最少字元
matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
if matchObj:
print "matchObj.group() : ", matchObj.group()
print "matchObj.group(1) : ", matchObj.group(1)
print "matchObj.group(2) : ", matchObj.group(2)
else:
print "No match!!"
matchObj.group() 相當于 matchObj.group(0),表示比對到的完整文本字元
matchObj.group(1) 表示第一個比對分組比對到的結果
matchObj.group(2) 表示第二個比對分組比對的結果
Python socket
用 socket()函數來建立套接字,文法格式如下:
socket.socket([family[, type[, proto]]])
eg:
server.py
import socket # 導入 socket 子產品
s = socket.socket() # 建立 socket 對象
host = socket.gethostname() # 擷取本地主機名
port = 12345 # 設定端口
s.bind((host, port)) # 綁定ip和端口
s.listen(5) # 監聽連接配接,最多連接配接5個
while True:
c,addr = s.accept() # 建立用戶端連接配接
c.send('hello world')
c.close()
client.py
import socket # 導入 socket 子產品
s = socket.socket() # 建立 socket 對象
host = socket.gethostname() # 擷取本地主機名
port = 12345 # 設定端口号
s.connect((host, port)) #發起連接配接
print(s.recv(1024)) #列印收到的資料,最多1024位元組
s.close()
小整數對象池
a = [1,2,3]
b = [1,2,4]
print(id(a[1]) == id(b[1))
id:檢視記憶體位址
python對于小整數對象有一個小整數對象池,範圍在[-5,257]之間(不同軟體可能上限有差別)。對于在這個範圍的數,不會建立對象。
是以,以上代碼列印出的是true