一、執行緒與程序
1、threadlocal
定義為乙個全域性變數,每乙個執行緒可以訪問,但是其在各個執行緒之間的訪問是不相互影響。對於各個執行緒來將就是區域性變數。
import threading
local_school = threading.local()#定義乙個threadlocal物件
def process_student():
std = local_school.student
print(std,threading.current_thread().name)
def process_thread(std):
local_school.student = std
process_student()
t1 = threading.thread(target=process_thread,args=('jamson',),name='thread-a')
t2 = threading.thread(target = process_thread,args = ('bob',), name = 'thread-b')
t1.start()
t2.start()
t1.join()
t2.join()
2、分布式程序
程序和執行緒的設計模式一般是master與worker模式,master主要負責分配任務,worker負責任務的計算。
利用multiprocessing.managers可以簡單實現分布式計算
二、正規表示式
1、基本知識
檢查某個字串的格式是否符合要求
在正規表示式中乙個字元代表與之相匹配的字元必須一致,\d表示匹配乙個數字,\w匹配乙個數字或字母;. 表示匹配任意乙個字元;\s 可匹配乙個空白符
』00\d' 表示輸入的前兩位必須是『00』,第三位必須是數字
'\w\d.a' 表示第乙個必須是數字或字母,第二位必須是數字,第三位隨意,第四位必須是a
對於變長字元 * 表示匹配任意個字元;+表示至少乙個字元 ;?表示1個或者0個字元; 表示n個字元; 表示n-m個字元
\d\s+\d #前3位為數字,在加上至少乙個空格,最後是3-8個數字,表示加上區號的號碼
2、高階
(1)[0-9a-za-z\_]
可以匹配乙個數字、字母或者下劃線;
(2)[0-9a-za-z\_]+
可以匹配至少由乙個數字、字母或者下劃線組成的字串,比如'a100'
,'0_z'
,'py3000'
等等;
(3)[a-za-z\_][0-9a-za-z\_]*
可以匹配由字母或下劃線開頭,後接任意個由乙個數字、字母或者下劃線組成的字串,也就是python合法的變數;
(4)[a-za-z\_][0-9a-za-z\_]
更精確地限制了變數的長度是1-20個字元(前面1個字元+後面最多19個字元)。
a|b
可以匹配a或b,所以(p|p)ython
可以匹配'python'
或者'python'
。
^
表示行的開頭,^\d
表示必須以數字開頭。
$
表示行的結束,\d$
表示必須以數字結束。
3、re模組
在字串前加上r』***xx'表示轉義
re.match(x,x)#匹配成功返回乙個match物件,失敗返回none
import re
re.match(r'^\d\-\d$','010-123456') #匹配成功返回乙個match物件
4、切分字串
re.split(x,x) 接受乙個正規表示式,和乙個字串
re.split(r'[\s]+','a b cd e')#去除連續的空格
5、分組
在正規表示式中加上()表示要提取的分組
m = re.match(r'^(\d)\-(\d)$','010-123456')
m.group(0) #'010-123456'
m.group(1) #'010'
m.group(2) # '123456'
6、預編譯
import re
re_telephone = re.compile(r'^(\d)\-(\d)$')
re_telephone.match('***xx').groups()#返回所有的分組
三、常用內建物件
1、日期和時間
from datetime import datetime
now = datetime.now()#獲取當前時間
(1)建立乙個日期和時間
dt = datetime(2019,4,2,13,20)
(2)str轉化為datetime
current_day = datetime.strptime('2019-4-2 12:4:30', '%y-%m-%d %h:%m:%s')
(3)datetime轉化為str
str_time = now.strftime('%c')
(4)日期時間相加
from datetime import datetime,timedleta
now = datetime.now()#獲取當前時間
now+timedelta(days=2,hours=3)#加上2天3小時
(5)datetime轉化為timestamp
now.timestamp()
(6)timestamp轉為datetime
ts2dt = datetime.fromtimestamp(t)
2、collections
(1)namedtuple
namedtuple是乙個函式。允許使用者自定tuple型別,並確定元素的個數,通過屬性進行訪問
from collections import namedtuple
point = namedtuple('point', [ 'x', 'y' ])
p = point(2,3)
p.xp.y
circle = namedtuple('circle', [ 'x', 'y', 'r' ])
(2)deque
list是線性表,插入和刪除效率低,deque是雙向列表
from collections import deque
q = deque()
q.pop()#刪除尾部
q.popleft()#刪除頭部
3、hashlib
雜湊模組主要提供了md5,shal。其中md5通常用來儲存密碼,為了資料的安全,一般加上使用者的賬號構成md5碼。
import hashlib
md5 = hashlib.md5()
md5.update('jamson,hardon'.encode('utf-8'))
print(md5.hexdigest())
4、litertools
(1)生成正整數
natural = itertools.count(1)
(2)ns = itertools.takewhile(lambda x: x<= 10,natural) #生成1-10的數,takewhile表示到....為止,結束
next
前端學習 Day07
所謂文件流就是按照元素的順序從左到右 由上而下的方式排列。預設的文件流很多時候不能滿足我們的布局要求,需要更豐富的布局手段,這就需要用到定位了。定位方式有 static fixed relative absolute。static靜態定位 預設 無定位,元素正常出現在文件流中 不受left,righ...
Python自學筆記 day07
當直譯器遇到import關鍵字,會去查詢對應的模組。查詢順序如下 當前目錄 sys模組中的path變數所有路徑 按預設搜尋路徑。import time print time.ctime 呼叫模組中的函式import首次匯入時會產生如下3步操作 1.首先開啟模組 2.然後執行對應的模組檔案,將執行過程...
黑馬python基礎班 day07
1 類屬性 在類裡面和方法外面定義的屬性稱為類屬性,類屬性屬於當前類。例項屬性 物件屬性 在init方法裡面定義的屬性稱為例項物件,例項屬性屬於某個物件。class person object 定義類屬性和例項屬性 類屬性 country 中國 skin color yellow def init ...