Python入门系列4-Python模块化编程

论坛 期权论坛 期权     
菜鸟的修行之路   2019-7-14 05:26   4482   0
好几天没有推文了,前几天正赶上期末写报告,所以推文停了几天。现在正式结课了,而且也搬到了新的工作地点,推文恢复正常节奏,欢迎各位的关注。
在前面的几篇推文中已经学习了Python中的数据结构、分支结构、循环结构、函数、面向对象编程。到现在为止,我们已经可以做很多的事情了。
如果有编程经验的朋友肯定会想到一个问题:到目前为止,我们所有的代码都是放在一个.py文件中的。很明显这不符合我们模块化开发的思想。
什么是Python模块?Python模块是一个.py文件,我们可以把我们定义的函数、类、变量放在一个.py文件中。然后在另一个.py文件中引用这些函数、类、或者变量。
通过将代码分为一个个Python模块,可以方便我们更好的管理和调试代码。同时,我们还可以很方便去引用别人写好的模块。有什么优点用了才会知道。
[h3]1、从语法上理解什么是Python模块[/h3](1)第一种语法导入模块的语法如下:
  1. import moduleName1, moduleName2, ...
复制代码
  1. #moduleName是我们要导入的模块的模块名,其实就是.py文件的文件名(不包括后缀名)
复制代码
调用模块中的函数的语法如下:
  1. moduleName1.functionName()
复制代码
下面还是通过一个例子来理解Python模块化操作:在support.py文件中定义两个函数:print1()、print2(),然后在test.py文件中调用support.py文件中定义的这两个函数support.py如下:
  1. def print1():
复制代码
  1.   print("我是support模块中的print1()")
复制代码
  1. [/code][code]def print2():
复制代码
  1.   print("我是support模块中的print2()")
复制代码
test.py如下:
  1. import support
复制代码
  1. support.print1()
复制代码
  1. support.print2()
复制代码
运行结果如下:


(2)第二种语法第(1)种语法调用模块中的函数的方式是moduleName.functionName(),这样似乎有点麻烦,我们也可以直接导入某一个模块中的函数,然后直接通过函数名来调用即可,不需要再指定模块名了。语法如下:
  1. from moduleName import functionName
复制代码
  1. #moduleName是要导入的模块名,functionName是要导入的模块中的函数名
复制代码
接着上面的例子:
  1. from support import print1, print2
复制代码
  1. print1()
复制代码
  1. print2()
复制代码
或者通过from moduleName import *可以一次性导入moduleName模块中的所有的函数。
(3)第三种语法:用as指定别名
场景1:为模块指定别名我觉得support模块的名字比较长,每次调用的时候使用完整的support模块名有点繁琐。这个时候,你可以使用as来为这个模块指定一个更简单的别名。
  1. import support as sp
复制代码
  1. sp.print1()
复制代码
  1. sp.print2()
复制代码
场景2:为模块中的某一个函数指定别名
  1. from support import print1 as p1
复制代码
  1. from support import print2 as p2
复制代码
  1. [/code][code]p1()
复制代码
  1. p2()
复制代码
学习Python模块化编程的目的不光是为了方便管理自己的代码,同时也是为了方便使用第三方厂家开发的模块。Python社区非常非常的活跃,有很多优秀的免费的第三方模块供我们使用,所以这是学习Python必须要掌握的一个知识。
[h3]1、使用第三方模块openpyxl操作Excel文档[/h3]Python生态中有很多免费的优秀的第三方模块可以使用,这里我只介绍一下如何使用第三方模块操作Excel文档。这个模块在后面的小项目中会用到,所以在这里提前介绍一下。
我们需要的模块是openpyxl,这是由第三方厂家开发的模块,操作Excel文件时可读可写。
因为openpyxl模块是第三方开发的模块,因此在使用它之前先要手动安装它。
这里我使用pip工具来安装,pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。使用pip安装openpyxl的命令如下:
  1. pip install openpyxl
复制代码
安装成功后的提示如下:


原文档中的内容如下:


参考代码如下:
新建一个python文件为excel_operate.py,内容如下:
  1. import openpyxl
复制代码
  1. [/code][code]class ExcelOperate(object):
复制代码
  1.   def __init__(self, file_name):
复制代码
  1.     self.__file_name = file_name
复制代码
  1. [/code][code]    #加载Excel文件
复制代码
  1.     self.__file = openpyxl.load_workbook(file_name)
复制代码
  1.    
复制代码
  1.   '''
复制代码
  1.   得到一个Excel文件中的所有表格名
复制代码
  1.   '''
复制代码
  1.   def get_sheets_name(self):
复制代码
  1.     names_list = self.__file.sheetnames
复制代码
  1.     return names_list
复制代码
  1. [/code][code]  '''
复制代码
  1.   修改一个Excel文件中的某一个表格的名字
复制代码
  1.   '''
复制代码
  1.   def change_sheet_name(self, sheet_name, new_sheet_name):
复制代码
  1.     work_sheet = self.__file[sheet_name]
复制代码
  1.     work_sheet.title = new_sheet_name
复制代码
  1.     self.__file.save(self.__file_name)
复制代码
  1. [/code][code]  '''
复制代码
  1.   读取Excel文件的某一个表格的内容,直接显示
复制代码
  1.   '''
复制代码
  1.   def read_sheet(self, sheet_name):
复制代码
  1.     work_sheet = self.__file[sheet_name]
复制代码
  1.     #最大存储数据的行号和列号
复制代码
  1.     max_row_number = work_sheet.max_row
复制代码
  1.     max_col_number = work_sheet.max_column
复制代码
  1.     for i in range(1, max_row_number+1):
复制代码
  1.       for j in range(1, max_col_number+1):
复制代码
  1.         cell = work_sheet.cell(i, j)
复制代码
  1.         print(cell.value, end=" ")
复制代码
  1.       print()
复制代码
  1. [/code][code]  '''
复制代码
  1.   向Excel文件的某一个表格增加一行内容
复制代码
  1.   '''
复制代码
  1.   def append_row(self, sheet_name, new_row):
复制代码
  1.     work_sheet = self.__file[sheet_name]
复制代码
  1.     # new_row是列表结构
复制代码
  1.     work_sheet.append_row(new_row)
复制代码
  1.     #保存结果
复制代码
  1.     self.__file.save(self.__file_name)
复制代码
  1. [/code][code]  '''
复制代码
  1.   修改Excel的某一个表格的某一个单元格的内容
复制代码
  1.   cell是一个字典:row、col、value
复制代码
  1.   '''
复制代码
  1.   def modify_cell(self, sheet_name, cell):
复制代码
  1.     work_sheet = self.__file[sheet_name]
复制代码
  1.     work_sheet.cell(cell['row'], cell['col']).value = cell['value']
复制代码
  1.     self.__file.save(self.__file_name)
复制代码
新建一个test.py,然后导入我们刚才新建的python模块,下面只演示其中两种功能:
  1. #导入我们自己定义的excel_operate模块
复制代码
  1. from excel_operate import ExcelOperate
复制代码
  1. [/code][code]print("roommates.xlsx中所有表格名为:")
复制代码
  1. op = ExcelOperate("roommates.xlsx")
复制代码
  1. #显示roommates.xlsx中的所有表格名
复制代码
  1. name_lists = op.get_sheets_name()
复制代码
  1. for name in name_lists:
复制代码
  1.   print(name)
复制代码
  1. [/code][code]print("\nmy_roommates表格的内容如下:")
复制代码
  1. #读取Excel文件中表格的内容
复制代码
  1. op.read_sheet("my_roommates")
复制代码
运行结果如下:

今天要学习的Python模块化编程内容比较少,到这儿就结束了。下一篇是Python入门系列的最后一篇推文了,学习的内容是:Python文件操作、Python中的异常处理。谢谢大家的持续关注。
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP