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)