
1. 模塊的用途
在Python中,模塊是代碼組織的一種方式,把功能相近的函數(shù)或者類放到一個文件中,一個文件(.py)就是一個模塊(module),模塊名就是文件名去掉后綴.py
這樣做的好處是:
- 提高代碼的可復(fù)用行、可維護性、一個模塊編寫完畢后,可以很方便的在其他項目中導(dǎo)入
- 解決了命名沖突,不同模塊中相同的命名不會沖突
2. 導(dǎo)入模塊
2.1 import 模塊名
使用這一方法可以將模塊中所有內(nèi)容(變量、函數(shù)、類)導(dǎo)入,但是使用這些內(nèi)容時必須用模塊名.變量、模塊名.函數(shù)、模塊名.類的方式,非常不方便
這里我們自定義一個模塊,test.py,模塊中有變量、函數(shù)、類,用來測試導(dǎo)入功能
# 定義變量
number = 100
# 定義函數(shù)
def run():
print("學(xué)生在跑步")
# 定義類
class Student:
def __init__(self,name):
self.name = name
def study(self):
print("學(xué)生在學(xué)習(xí)")
import test
# 使用變量
result = test.number + 100
print(result) #200
# 使用函數(shù)
test.run() #學(xué)生在跑步
# 使用類
s = test.Student("張三")
s.study() #張三在學(xué)習(xí)
2.2 from 模塊名 import 模塊內(nèi)容
使用這一方法可以單個或多個導(dǎo)入模塊中的內(nèi)容,且可以直接使用,不需要"模塊名.內(nèi)容"來引用
當使用多個內(nèi)容時,不同內(nèi)容之間用","隔開
這里還是使用test.py來進行測試
from test import number
from test import run,Student
# 使用變量
result = number + 100
print(result) #200
# 使用函數(shù)
run() #學(xué)生在跑步
# 使用類
s = Student("張三")
s.study() #張三在學(xué)習(xí)
2.3 from 模塊名 import *
當使用模塊中的所有內(nèi)容時可以使用這一方法,將會自動導(dǎo)入模塊中的所有內(nèi)容,并且可以直接使用,不需"模塊名.內(nèi)容"
如果想使用"*"導(dǎo)入模塊內(nèi)容,可以在模塊中使用__ all __ = [使用星號可以訪問的內(nèi)容],限制訪問內(nèi)容
這里還是使用test.py來進行測試
from test import *
# 使用變量
result = number + 100
print(result) #200
# 使用函數(shù)
run() #學(xué)生在跑步
# 使用類
s = Student("張三")
s.study() #張三在學(xué)習(xí)
2.4 __ name __ = '__ main __'
__ name __ = '__ main __'說明只有在本模塊中才會執(zhí)行其中的代碼,而在其他模塊中,導(dǎo)入該模塊不會執(zhí)行這些代碼
使用__ name __ = '__ main __',將要執(zhí)行的代碼放入其下,那么導(dǎo)入時將不會執(zhí)行
在模塊內(nèi)部,__ name __ 等于 __ main __ ,模塊外部 __ name __ 等于類名,所有不會執(zhí)行
if __name__ = "__main__":
將要執(zhí)行代碼
3. 包
3.1 包的概念
簡單來說,包就是文件夾,但該文件夾下必須存在 __ init __ .py 文件, 該文件的內(nèi)容可以為空。
__ init __.py 用于標識當前文件夾是一個包。
包下放的內(nèi)容一般為模塊
3.2 包的使用
from 包名 import 模塊名
這種導(dǎo)入方式會導(dǎo)致使用模塊內(nèi)容時必須"模塊名.內(nèi)容"
from 包名.模塊名 import 內(nèi)容
這種導(dǎo)入方式可以直接使用模塊中的內(nèi)容
from 包名.模塊名 import *
導(dǎo)入包中模塊所有內(nèi)容,也可直接使用,可以用__ all __ 選擇要導(dǎo)入的內(nèi)容
3.3 包中的__ init __.py
作用:
- 在導(dǎo)入包或?qū)氚械娜我饽K時,先默認執(zhí)行__ init __.py,所以可以把一些初始化函數(shù)、變量、類定義在其中,可使用"包名.內(nèi)容"來使用其中的內(nèi)容
- from 包名 import *,可以將所有包下所有模塊都導(dǎo)入,但不能使用,要在 __ init .py中定義 all __ = [可以使用的模塊],這樣就可以使用模塊了
4. 常用系統(tǒng)模塊
4.1 sys模塊
該模塊提供對解釋器使用或維護的一些變量的訪問,以及與解釋器強烈交互的函數(shù)。它始終可用。
4.2 time模塊
import time
# 1.time():時間戳,返回固定時間距今的秒數(shù)
t = time.time()
print(time)
# 2.sleep(n):休眠n秒
time.sleep(5)
# 3.ctime():將時間戳轉(zhuǎn)為字符串
s = time.ctime(t)
print(s)
# 4.localtime():將時間戳改為元組
tu = time.localtime(t)
print(tu)
print(tu.tm_hour)
print(tu.tm_year)
# 5.mktime():將元組轉(zhuǎn)成時間戳
tt = time.mktime(tu)
print(tt)
# 6.strftime():將當前時間轉(zhuǎn)為字符串
s = time.strftime('%Y-%m-%d %H:%M:%S')
print(s)
# 7.strptime():將字符串轉(zhuǎn)為元組的方式
r = time.strptime('2019/06/20','%Y/%m/%d')
print(r)
4.3 random模塊
import random
# 隨機返回0-1之間的小數(shù)
ran = random.random()
print(ran)
# 隨機返回[1,10]之間的整數(shù)
ran = random.randint(1,10)
print(ran)
# 隨機返回[1,10)之間步幅為2的整數(shù)
ran = random.randrange(1,10,2)
print(ran)
# 隨機返回給定列表的一個元素
list = [1,2,3,4,5]
ran = random.choice(list)
print(ran)
# 隨機列表打亂順序,在列表上直接修改
list = [1,2,3,4,5,6]
ran = random.shuffle(list)
print(ran)
print(list)
4.4 hashlib模塊
import hashlib
# 加密信息
mes = "密碼是123456"
# 加密方式一:md5
# 加密時首先用encode()編碼
# 輸出時必須用hexdigest()
md5 = hashlib.md5(mes.encode("utf-8"))
print(md5.hexdigest())
# 加密方式二:sha1
sha1 = hashlib.sha1(mes.encode("utf-8"))
print(sha1.hexdigest())
# 加密方式三:sha256
sha256 = hashlib.sha256(mes.encode("utf-8"))
print(sha256.hexdigest())