python知識整合(模塊)

1、自定義模塊

在Python中一個.py文件就是一個模塊。

在python中自定義模塊有2個作用。一個是規範代碼,讓代碼更易於閱讀。另一個是方便其他程序使用已經編寫好的代碼,提高開發效率、

要實現自定義模塊主要分爲創建模塊和導入模塊2部分。

1.1、創建模塊

就是將模塊中的相關代碼編寫在單獨的文件中,文件名爲模塊名.py
要注意的是設置的模塊名不能與python自帶的標準庫名稱一樣。如果一樣的話。先導入了我們自定義的模塊後,就不能再導入python自帶的標準庫

1.2、使用import語句導入模塊

使用import導入
語法格式

import modulename [as alias]

部分參數說明:
[as alias] 給模塊起的別名,可以通過該別名使用模塊

在調用模塊中的變量、函數或者類等時,需要在變量、函數或者類名前面添加“模塊名.”

使用import語句也可以一次導入多個模塊

import re,requests,os

1.3、使用from…import語句導入模塊
在使用import語句導入模塊時,每執行一條import語句就會創建一個新的命名空間,且在調用模塊中的變量、函數或者類時,需要在變量、函數或者類名前面添加“模塊名.”。

使用from…import語句導入模塊是把具體的定義導入到當前的命名空間,不需要添加前綴,直接通過具體的變量、函數或者類等訪問即可。

語法格式:

from modelname import member

參數說明:
modelname:模塊名區分大小寫
member:用於指定要導入的變量、函數或者類等,可以同時導入多個定義,如果要想導入全部定義使用“*”代替。

注意:在導入模塊時,如果使用了通配符*導入全部定義之後,可以使用dir()來查看具體導入了哪些定義。

1.3、模塊搜索的目錄

當使用import語句導入模塊時,在默認的情況下,按一下順序進行查找
1、在當前目錄進行查找
2、在python環境變量下的每個目錄查找
3、到python的默認安裝目錄下查找

說明的各個目錄的具體位置都是保存在標準模塊sys的sys.path變量中。可以通過一下代碼輸出具體的目錄

import sys
print(sys.path)

如果要導入的模塊不在標準模塊sys的sys.path變量中,會報錯。(注意模塊名區分大小寫)

這時有3種方式可以將指定的目錄添加到sys.path中

1、臨時添加
通過該方法添加的目錄只在執行當前文件的窗口有效,窗口關閉後就失效。
語法格式

import sys
sys.path.append("要添加的指定目錄")

2、增加.pth文件(推薦)

在python安裝目錄的子目錄Lib\site-packages子目錄中,創建一個擴展名爲.pth的文件,文件名任意,在該文件中添加要導入模塊所在的目錄。然後重新打開要執行導入模塊的python文件,使得新添加的目錄生效。

通過該方法添加的目錄只在當前版本的python中有效

3、在PYTHONPATH環境變量中添加
在系統的環境變量對話框中,查找在PYTHONPATH環境變量,如果沒有就創一個,然後添加所要導入的模塊的目錄。然後重新打開要執行導入模塊的python文件,使得新添加的目錄生效。

通過該方法添加的目錄在不同版本的python中都有效

2、以主程序的形式執行

創建一個aaa模塊

p = "蘋果"
def fun_c():
    p = "一個爛蘋果"
    print(p)
if __name__=="__main__":
    print("哈哈哈哈")

在text中導入該模塊

import aaa
print(aaa.p)

輸出

蘋果

說明:如果在aaa模塊中沒有if語句的話,會把下面的測試語句( print(“哈哈哈哈”))也一塊執行。但是我們只想要輸出變量p。故將測試語句放入if語句。

3、python中的包

python中的包是一個分層的目錄結構,它將一組功能相近的模塊組織在一個目錄下,這樣就可以起到代碼規範的作用,又可以避免模塊重名引起的衝突

簡單來說python的包就是一個含義__init__.py的文件的文件夾

3.1、創建

1、創建包就是創建一個文件夾,並在文件裏創建一個名稱爲__init__.py的文件。在__init__.py文件裏可以不編寫代碼,也可以編寫代碼,在導入包時會自動執行。

注意:init.py文件是一個模塊文件,模塊名爲包名。在a包中創建的__init__.py文件,對應的模塊名爲a

3.2、使用包

創建包,然後在包中創建相應的模塊,然後再使用import語句從包中加載模塊。
從包中加載模塊有以下3種方式。

1、通過"import+完整包名+模塊名"的方式加載指定模塊
語法格式

import 完整包名.模塊名

通過該方式,訪問模塊中的變量時,語法格式如下

完整包名.模塊名.變量名

2、通過"from+完整包名+import+模塊名"的方式加載指定模塊
語法格式:

from 完整包名 import 模塊名

通過該方式,訪問模塊中的變量時,語法格式如下

 模塊名.變量名

3、通過通過"from+完整包名+import+模塊名+定義名"的方式加載指定模塊
語法格式

   from 完整包名.模塊名  import 定義名1,定義名2,....

定義名可以是函數、類、變量名等

通過該方式,訪問模塊中的函數、類、變量等,語法格式如下

定義名

如果使用*號則表示加載該模塊下的所有定義

4、引用其他模塊

在python中除了自定義模塊,還有其他模塊,主要包括標準模塊和第三方模塊。

下表爲python中常用的內置的標準模塊

模塊名 概述
sys 與python解釋器及其環境操作相關的標準庫
time 提供與時間相關的各種函數的標準庫
os 提供了訪問操作系統服務功能的標準庫
calendar 提供了與日期相關的各種函數的標準庫
urllib 用於讀取來自網上(服務器上)的數據的標準庫
json 用於使用JSON序列化和反序列化
re 用於在字符串中執行正則表達式匹配和替換
math 提供標準算術運算函數的標準庫
decimal 用於進行精確控制運算精度、有效位數和四捨五入操作的十進制運算
shutil 用於進行高級文件操作,如複製等
logging 提高了靈活的記錄事件、錯誤、警告和調試信息等日誌信息的功能
thinker 使用python進行GUI編程的標準庫

當然python有許多標準庫,可以在python的安裝目錄下,的DOC目錄下的擴展名爲.chm文件(就是python的幫助文檔)打開文件,文件裏的The Python Standard Library下面的Python Runtime Services裏進行查看,當然也可以上網查找。

5、牛刀小試

5.1、輸出6位數的驗證碼

要求確保6位數中有一位大寫字母,一位小寫字母,一位數字

import random, string
code_li = []
"""確保6位數中有一位大寫字母,一位小寫字母,一位數字"""
code_li.append(random.choice(string.ascii_lowercase))    # 隨機添加小寫字母
code_li.append(random.choice(string.digits))             # 隨機添加
code_li.append(random.choice(string.ascii_uppercase))    # 隨機添加大寫字母
while len(code_li)<6:
    code_li.append(random.choice(string.ascii_lowercase+string.digits+string.ascii_uppercase))
    print(code_li)
q_code = "".join(code_li)
"""
join()函數
語法:  'sep'.join(seq)
參數說明
sep:分隔符。可以爲空
seq:要連接的元素序列、字符串、元組、字典
上面的語法即:以sep作爲分隔符,將seq所有的元素合併成一個新的字符串
返回值:返回一個以分隔符sep連接各個元素後生成的字符串
"""
print(q_code)

5.2、轉化爲時間戳

把2019-01-02 20:12:54轉化爲時間戳

import time
dt = "2019-01-02 20:12:54"
timeArray = time.strptime(dt,"%Y-%m-%d %H:%M:%S")  # 根據指定的格式把一個時間字符串解析爲時間元組。(轉化爲時間戳)
# timestamp = time.mktime(timeArray)   # 返回用秒數來表示時間的浮點數
# print(timestamp)
print(timeArray)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章