Python:模塊

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

作用:

  1. 在導(dǎo)入包或?qū)氚械娜我饽K時,先默認執(zhí)行__ init __.py,所以可以把一些初始化函數(shù)、變量、類定義在其中,可使用"包名.內(nèi)容"來使用其中的內(nèi)容
  2. 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())
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容