在前面的幾篇推文中已經學習了Python中的數據結構、分支結構、循環結構、函數、面向對象編程。到現在為止,我們已經可以做很多的事情了。
如果有編程經驗的朋友肯定會想到一個問題:到目前為止,我們所有的代碼都是放在一個.py文件中的。很明顯這不符合我們模塊化開發的思想。
什麼是Python模塊?Python模塊是一個.py文件,我們可以把我們定義的函數、類、變量放在一個.py文件中。然後在另一個.py文件中引用這些函數、類、或者變量。通過將代碼分為一個個Python模塊,可以方便我們更好的管理和調試代碼。同時,我們還可以很方便去引用別人寫好的模塊。有什麼優點用了才會知道。
1、從語法上理解什麼是Python模塊
(1)第一種語法
導入模塊的語法如下:
import moduleName1, moduleName2, ... #moduleName是我們要導入的模塊的模塊名,其實就是.py文件的文件名(不包括後綴名)
調用模塊中的函數的語法如下:
moduleName1.functionName()
下面還是通過一個例子來理解Python模塊化操作:
在support.py文件中定義兩個函數:print1()、print2(),然後在test.py文件中調用support.py文件中定義的這兩個函數
support.py如下:
def print1(): print("我是support模塊中的print1()") def print2(): print("我是support模塊中的print2()")
test.py如下:
import support support.print1() support.print2()
運行結果如下:
(2)第二種語法
第(1)種語法調用模塊中的函數的方式是moduleName.functionName(),這樣似乎有點麻煩,我們也可以直接導入某一個模塊中的函數,然後直接通過函數名來調用即可,不需要再指定模塊名了。
語法如下:
from moduleName import functionName #moduleName是要導入的模塊名,functionName是要導入的模塊中的函數名
接著上面的例子:
from support import print1, print2 print1() print2()
或者通過from moduleName import *可以一次性導入moduleName模塊中的所有的函數。
(3)第三種語法:用as指定別名
場景1:為模塊指定別名
我覺得support模塊的名字比較長,每次調用的時候使用完整的support模塊名有點繁瑣。這個時候,你可以使用as來為這個模塊指定一個更簡單的別名。
import support as sp sp.print1() sp.print2()
場景2:為模塊中的某一個函數指定別名
from support import print1 as p1 from support import print2 as p2 p1() p2()
學習Python模塊化編程的目的不光是為了方便管理自己的代碼,同時也是為了方便使用第三方廠家開發的模塊。Python社區非常非常的活躍,有很多優秀的免費的第三方模塊供我們使用,所以這是學習Python必須要掌握的一個知識。
2、使用第三方模塊openpyxl操作Excel文檔
Python生態中有很多免費的優秀的第三方模塊可以使用,這裡我只介紹一下如何使用第三方模塊操作Excel文檔。
我們需要的模塊是openpyxl,這是由第三方廠家開發的模塊,操作Excel文件時可讀可寫。
因為openpyxl模塊是第三方開發的模塊,因此在使用它之前先要手動安裝它。
這裡我使用pip工具來安裝,pip 是 Python 包管理工具,該工具提供了對Python 包的查找、下載、安裝、卸載的功能。使用pip安裝openpyxl的命令如下:
pip install openpyxl
安裝成功後的提示如下:
原文檔中的內容如下:
參考代碼如下:
新建一個python文件為excel_operate.py,內容如下:
import openpyxl class ExcelOperate(object): def __init__(self, file_name): self.__file_name = file_name #加載Excel文件 self.__file = openpyxl.load_workbook(file_name) ''' 得到一個Excel文件中的所有表格名 ''' def get_sheets_name(self): names_list = self.__file.sheetnames return names_list ''' 修改一個Excel文件中的某一個表格的名字 ''' def change_sheet_name(self, sheet_name, new_sheet_name): work_sheet = self.__file[sheet_name] work_sheet.title = new_sheet_name self.__file.save(self.__file_name) ''' 讀取Excel文件的某一個表格的內容,直接顯示 ''' def read_sheet(self, sheet_name): work_sheet = self.__file[sheet_name] #最大存儲數據的行號和列號 max_row_number = work_sheet.max_row max_col_number = work_sheet.max_column for i in range(1, max_row_number+1): for j in range(1, max_col_number+1): cell = work_sheet.cell(i, j) print(cell.value, end=" ") print() ''' 向Excel文件的某一個表格增加一行內容 ''' def append_row(self, sheet_name, new_row): work_sheet = self.__file[sheet_name] # new_row是列表結構 work_sheet.append_row(new_row) #保存結果 self.__file.save(self.__file_name) ''' 修改Excel的某一個表格的某一個單元格的內容 cell是一個字典:row、col、value ''' def modify_cell(self, sheet_name, cell): work_sheet = self.__file[sheet_name] work_sheet.cell(cell['row'], cell['col']).value = cell['value'] self.__file.save(self.__file_name)
新建一個test.py,然後導入我們剛才新建的python模塊,下面只演示其中兩種功能:
#導入我們自己定義的excel_operate模塊 from excel_operate import ExcelOperate print("roommates.xlsx中所有表格名為:") op = ExcelOperate("roommates.xlsx") #顯示roommates.xlsx中的所有表格名 name_lists = op.get_sheets_name() for name in name_lists: print(name) print("\nmy_roommates表格的內容如下:") #讀取Excel文件中表格的內容 op.read_sheet("my_roommates")
運行結果如下:
今天要學習的Python模塊化編程內容比較少,到這兒就結束了。下一篇是Python入門系列的最後一篇推文了,學習的內容是:Python文件操作、Python中的異常處理。謝謝大家的關注。