python學習系列 day07

2021-09-14 08:13:37 字數 3700 閱讀 3520

一、執行緒與程序

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 ...