日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python123第五章_python 3.5学习笔记(第五章)

發(fā)布時間:2025/3/8 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python123第五章_python 3.5学习笔记(第五章) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本章內(nèi)容

1、什么是模塊

2、模塊的導(dǎo)入方法

3、搜索路徑

4、重要標(biāo)準(zhǔn)庫

一、什么是模塊

1、模塊本質(zhì)上是一個以.py 結(jié)尾的python文件,包含了python對象定義和python語句。

2、模塊是用來從邏輯上組織python代碼(定義變量、函數(shù)、類、邏輯等)以實現(xiàn)某種功能

3、包:包含多個模塊的文件夾(包中要有一個__init__.py的文件,文件內(nèi)容可以是空的)

二、導(dǎo)入模塊

1、完全導(dǎo)入

import 模塊1[, 模塊2[,... 模塊N]

from 包名 import 模塊名

import test 相當(dāng)于把test中的所有代碼都賦值給了test這個變量

注:

(1)建議每一個模塊都單獨導(dǎo)入便于閱讀

(2)也可以使用 from module_name import * 來導(dǎo)入模塊中的所有功能,但是不建議這樣做

(3)如果模塊名字太長,導(dǎo)入后調(diào)用會不方便,可以使用下面的方法

import 原模塊名 as 新模塊名

(4)一個模塊只能被導(dǎo)入一次

2、部分導(dǎo)入

from 模塊名 import 方法名

3、導(dǎo)入包

import包名#只執(zhí)行init文件中的code

import包名.模塊名#既執(zhí)行init文件中的code,也會執(zhí)行導(dǎo)入的模塊中的code

小結(jié):

1、導(dǎo)入模塊的本質(zhì)是把python文件執(zhí)行一遍

2、導(dǎo)入包的本質(zhì)是執(zhí)行包下的__init__.py 文件

三、搜索路徑

import module_name-->module_name.py-->module_name.py的路徑-->sys.path-->在當(dāng)前目錄下尋找-

->找父集目錄【os模塊-->os.path.dirname(os.path.abspath(__file__))】

當(dāng)導(dǎo)入一個模塊的時候,python解釋器對模塊位置的搜索順序是:

1、當(dāng)前目錄

2、如果不在當(dāng)前目錄,Python 則搜索在 shell 變量 PYTHONPATH 下的每個目錄。

3、如果都找不到,Python會察看默認(rèn)路徑。

四、重要標(biāo)準(zhǔn)庫

1、time標(biāo)準(zhǔn)庫

1)time模塊中時間的表示方法有三種:

a、 timestamp時間戳,時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量

b、struct_time時間元組,共有九個元素組 。

time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=20, tm_min=20, tm_sec=45, tm_wday=6, tm_yday=140, tm_isdst=0)2018

c、format time 格式化時間,已格式化的結(jié)構(gòu)使時間更具可讀性。包括自定義格式和固定格式。(如:年-月-日-時- 分-秒)

2)time模塊中的內(nèi)置方法

a、time()

——return current time in seconds since the Epoch as a float

#獲取時間戳(秒)

importtime

a=time.time()print(a)

》1526822821.9055681

3)sleep()

——delay for a number of seconds given as a float 、

#程序休眠

importtime

time.sleep(3)print("休眠3s")

4)gmtime()

—— convert seconds since Epoch to UTC tuple

#把時間戳轉(zhuǎn)換為struct_time的格式,默認(rèn)對當(dāng)前時間進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換結(jié)果是utc時區(qū)的時間

importtime

a=time.gmtime()print(a)

》time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=13, tm_min=31, tm_sec=24, tm_wday=6, tm_yday=140, tm_isdst=0)

5)localtime()

——convert seconds since Epoch to local time tuple

#把時間戳轉(zhuǎn)換為struct_time的格式,默認(rèn)對當(dāng)前時間進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換結(jié)果是本地時區(qū)的時間

importtime

a=time.localtime()print(a)

》time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=21, tm_min=33, tm_sec=1, tm_wday=6, tm_yday=140, tm_isdst=0)

注意:mgtime() 和 loacltime() 之間相差8個小時。

6)asctime()

——?convert time tuple to string

#接收的變量是元組

importtime

a=time.localtime()

b=time.asctime(a)print(a)print(b)

》time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=21, tm_min=38, tm_sec=4, tm_wday=6, tm_yday=140, tm_isdst=0)

》Sun May20 21:38:04 2018

7)ctime()

—— convert time in seconds to string

#接收的變量是時間戳

importtime

a=time.time()

b=time.ctime(a)print(a)print(b)

》1526823558.3019936》Sun May20 21:39:18 2018

8)mktime()

——convert local time tuple to seconds since Epoch

#把struct_time轉(zhuǎn)換為時間戳的形式

importtime

a=time.localtime()

b=time.mktime(a)print(a)print(b)

》time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=21, tm_min=40, tm_sec=33, tm_wday=6, tm_yday=140, tm_isdst=0)

》1526823633.0

9)strftime()

——convert time tuple to string according to format specification

#把元組格式的時間轉(zhuǎn)換為格式化的字符串格式的時間

importtime

a=time.localtime()

b= time.strftime("%Y-%m-%d %H:%M:%S",a)print(a)print(b)

》time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=21, tm_min=45, tm_sec=7, tm_wday=6, tm_yday=140, tm_isdst=0)

》2018-05-20 21:45:07

10)strptime()

——parse string to time tuple according to format specification

#把格式化的字符串格式的時間轉(zhuǎn)換為元組格式的時間

importtime

a=time.localtime()

b= time.strftime("%Y-%m-%d %H:%M:%S",a)

c= time.strptime(b,"%Y-%m-%d %H:%M:%S")print(a)print(b)print(c)

》time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=21, tm_min=47, tm_sec=17, tm_wday=6, tm_yday=140, tm_isdst=0)

》2018-05-20 21:47:17》time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=21, tm_min=47, tm_sec=17, tm_wday=6, tm_yday=140, tm_isdst=-1)

2、datatime標(biāo)準(zhǔn)庫

1)datetime.datetime.now()

——當(dāng)前時間

importdatetimeprint(datetime.datetime.now()) #當(dāng)前時間

》2018-05-20 21:53:21.906109

2)replace()

——修改當(dāng)前時間

importdatetime

a_time=datetime.datetime.now()print(a_time)

b_time= a_time.replace(year=1,month=1,day=1,minute=0,hour=0,second=0)print(b_time)

》2018-05-20 21:55:57.781579》0001-01-01 00:00:00.781579

3)timedelta()

——時間延遲

importdatetimeprint("當(dāng)前時間:",datetime.datetime.now())print(datetime.datetime.now()+datetime.timedelta(3)) #當(dāng)前時間加三天

print(datetime.datetime.now()+datetime.timedelta(-3)) #當(dāng)前時間減三天

print(datetime.datetime.now()+datetime.timedelta(hours=3)) #當(dāng)前時間加三個小時

print(datetime.datetime.now()+datetime.timedelta(hours=-3)) #當(dāng)前時間減三個小時

print(datetime.datetime.now()+datetime.timedelta(minutes=30)) #當(dāng)前時間加30分鐘

》當(dāng)前時間: 2018-05-20 21:59:19.389405》2018-05-23 21:59:19.389405》2018-05-17 21:59:19.389405》2018-05-21 00:59:19.389405》2018-05-20 18:59:19.389405》2018-05-20 22:29:19.389405

3、random標(biāo)準(zhǔn)庫

1)隨機(jī)取浮點數(shù)

(a)不指定隨機(jī)區(qū)間

importrandomprint(random.random())

》0.23569079391833148

(b)指定隨機(jī)區(qū)間

importrandomprint(random.uniform(1,10))>>>6.12050957632076

#包括1和10

2)隨機(jī)取整數(shù)

importrandomprint(random.randint(1,3))#包括1和3

print(random.randrange(1,3))

#包括1但是不包括3

3)傳入?yún)?shù),然后在參數(shù)中隨機(jī)取出內(nèi)容

(a)從傳入的參數(shù)中隨機(jī)取一個值

importrandomprint(random.choice("sfbuewahelih"))

》f

(b)從傳入的內(nèi)容中隨機(jī)取n位

importrandomprint(random.sample("nioasfgje9gh",3))

#取3位,結(jié)果以列表的形式呈現(xiàn)并且是序的

》['s', 'n', 'a']

4)打亂順序

importrandom

items= [1,2,3,4,5]print(items)

random.shuffle(items)print(items)>>>[1, 2, 3, 4, 5]

[2, 4, 5, 1, 3]

5)利用random模塊實現(xiàn)一個簡單的驗證碼功能

importrandom

checkcode= ''

for i in range(5):

current= random.randint(0,5)if current ==i:

tmp= chr(random.randint(65,90))else:

tmp= random.randint(0,9)

checkcode+=str(tmp)print(checkcode)

4、os模塊

提供對操作系統(tǒng)進(jìn)行調(diào)用的接口

1)os.getcwd() :獲取當(dāng)前工作目錄,即當(dāng)前py腳本工作的目錄路徑

2)os.chdir("dirname") :改變當(dāng)前腳本的工作目錄,相當(dāng)于shell下的cd

3)os.curdir :返回當(dāng)前目錄

4)os.pardir : 獲取當(dāng)前目錄的父目錄字符串名

5)os.makedirs("dirname1/dirname2") : 可生成多層遞歸目錄

6)os.removedirs("dirname1") : 若目錄為空,則刪除,并遞歸到上一級目錄,如果仍然為空,則繼續(xù)刪除,以此類推

7)os.mkdir("dirname") : 生成單級目錄,相當(dāng)于shell中的mkdir dirname

8)os.rmdir("dirname") : 刪除單級空目錄,若目錄不為空則無法刪除,報錯;相當(dāng)于shell中的rmdir dirname

9)os.listdir("dirname") : 列出指定目錄下的所有文件和子目錄,包括隱藏文件,并以列表的方式打印

10)os.remove() : 刪除一個文件

11)os.rename("oldname","newname") :重命名文件/目錄

12)os.stat("path/filename") :獲取文件/目錄信息

13)os.sep :輸出操作系統(tǒng)特定的路徑分隔符,win下為“\\” , Linux 下為“/”

14)os.linesep :輸出當(dāng)前平臺使用的行終止符(換行符),win下為“\t\n” , Linux 下為“\n”

15)os.pathsep : 輸出用于分割文件路徑的字符串

16)os.name : 輸出字符串指示當(dāng)前使用平臺。 win->"nt", Linux->"posix"

17)os.system("bash command") :運行shell命令,直接顯示

18)os.environ :獲取系統(tǒng)環(huán)境變量

19)os.path.abspath(path) : 返回path規(guī)范化的絕對路徑

20)os.path.split(path) : 將path分割成目錄和文件名二元組返回

21)os.path.dirname(path) : 返回path的目錄。其實就是os.path.split(path)的第一個元素

22)os.path.basename(path) : 返回path最后的文件名。如果path以 / 或 \ 結(jié)尾,那么就會返回空值。

23)os.path.exists(path) : 如果path存在,返回True

24)os.path.isabs(path) : 如果path是絕對路徑,返回True

25)os.path.isfile(path) :如果path是一個存在的文件,返回True,否則返回False

26)os.path.isdir(path) :如果path是一個存在的目錄,則返回true,否則返回false

27)os.path.join(path1 [,path2 [, ......]]) :將多個路徑組合后返回,第一個絕對路徑之前的參數(shù)將被忽略

28)os.path.getatime(path) :返回path所指向的文件或者目錄的最后存取時間

29)os.path.getmtime(path) : 返回path所指向的文件或者目錄的最后修改時間

5、sys模塊

1) sys.argv : 實現(xiàn)從程序外部向程序傳遞參數(shù)

2) sys.exit([arg]) : 程序中間的退出,arg=0為正常的退出

3) sys.getdefaultencoding() : 獲取系統(tǒng)當(dāng)前編碼,一般默認(rèn)為ascii

4) sys.setdefaultencoding() : 設(shè)置系統(tǒng)默認(rèn)編碼,執(zhí)行dir(sys) 時不會看到這個方法,在解釋器中執(zhí)行不通過,可以先執(zhí)行reload(sys) ,

再執(zhí)行setdefaultencoding('utf-8'), 此時將系統(tǒng)默認(rèn)編碼設(shè)置為utf-8。

5) sys.getfilesystemencoding() :? 獲取文件系統(tǒng)使用編碼方式,windows下返回“mbcs”,mac下返回“utf-8”。

6) sys.path : 獲取指定模塊搜索路徑的字符串集合,可以將寫好的模塊放在得到的某個路徑下,就可以在程序中import時正確找到。

7) sys.platform : 獲取當(dāng)前系統(tǒng)平臺

6、shutil模塊

可以復(fù)制(copy),可以壓縮(zip)

參考:https://blog.csdn.net/ff_smile/article/details/78081909

7、Configparser模塊

參考:https://blog.csdn.net/miner_k/article/details/77857292

8、xml模塊

參考:https://www.jb51.net/article/114411.htm

9、shelve模塊

參考:https://www.jb51.net/article/118198.htm

10、Hashlib模塊

參考:https://blog.csdn.net/seymour163/article/details/53448029

11、Hmac模塊

參考:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0015108777177966ef0f4f8510a41b3b8c48cdcf7047b2d000

12、正則表達(dá)式Re模塊

基礎(chǔ)語法:

1)?'.'?????默認(rèn)匹配除\n之外的任意一個字符,若指定flag DOTALL,則匹配任意字符,包括換行

2)?'^'?????匹配字符開頭,若指定flags MULTILINE,這種也可以匹配上(r"^a","\nabc\neee",flags=re.MULTILINE)

3)?'$'?????匹配字符結(jié)尾,或e.search("foo$","bfoo\nsdfsf",flags=re.MULTILINE).group()也可以

4)?'*'?????匹配*號前的字符0次或多次,re.findall("ab*","cabb3abcbbac")? 結(jié)果為['abb','ab','a']

5)?'+'?????匹配前一個字符1次或多次,re.findall("ab+","ab+cd+abb+bba") 結(jié)果['ab','abb']

6)?'?'?????匹配前一個字符1次或0次

7)?'{m}'???匹配前一個字符m次

8)?'{n,m}'?匹配前一個字符n到m次,re.findall("ab{1,3}","abb abc abbcbbb") 結(jié)果'abb','ab','abb']

9)?'|'?????匹配|左或|右的字符,re.search("abc|ABC","ABCBabcCD").group() 結(jié)果'ABC'

10)?'(...)'?分組匹配,re.search("(abc){2}a(123|456)c","abcabca456c").group() 結(jié)果 abcabca456c

11)?'\A'????只從字符開頭匹配,re.search("\Aabc","alexabc") 是匹配不到的

12)?'\Z'????匹配字符結(jié)尾,同$

13)?'\d'????匹配數(shù)字0-9

14)?'\D'????匹配非數(shù)字

15)?'\w'????匹配[A-Za-z0-9]

16)?'\W'????匹配非[A-Za-z0-9]

17)?'s'?????匹配空白字符、\t、\n、\r , re.search("\s+","ab\tc1\n3").group() 結(jié)果'\t'

18)'(?P...)'?分組匹配 re.search("(?P[0-9]{4})(?P[0-9]{2})(?P[0-9]{4})","371481199306143242").groupdict("city")

結(jié)果{'province':'3714','city':'81','birthday':'1993'}

常用語法:

1) re.match("","") 從頭開始匹配

2) re.search("","") 從整個文本中來搜索

3) re.findall("","") findall沒有g(shù)roup方法

4) re.split("","") 按照指定內(nèi)容進(jìn)行分割

5) re.sub("匹配的內(nèi)容","指定內(nèi)容","待匹配項"[, count = n])

將匹配到的內(nèi)容更換為指定內(nèi)容,count 表示需要更換的次數(shù),當(dāng)count=2時,只更換匹配到的前兩個

6) ^ 匹配字符的開頭

7) \d 匹配一個數(shù)字

8) \d+ 匹配一個或多個數(shù)字

9) $ 以最后一個要匹配的字符結(jié)尾

10) [a-z] 從小寫a到小寫z

11) [a-zA-Z] 從小寫a到大寫Z

12) [a-zA-Z0-9] 從小寫a到數(shù)字9

13) re.search("[a-z]+","adasfAfsaB",flags=re.I)

flags=re.I 表示忽略大小寫   flags=re.M 表示多行模式,改變'^'和'$'的行為   flags=re.S 表示點任意匹配模式,改變'.'的行為

總結(jié)

以上是生活随笔為你收集整理的python123第五章_python 3.5学习笔记(第五章)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。