我们之前接触多的编程方式就是函数式编程,而且喜欢就一个文件里写完所有的程序代码,这样做在前期感觉还不错,不过一旦你的程序变复杂,在易读性和排错方面就感觉好吃力,功能界限不明显,那今天我们就来讲讲怎么用模块进行功能分类

  

单文件编程

  来!先看一个用单文件函数式编程实现所有的功能的例子

#数据源
database = {
'engine':'mysql',
'host':'localhost',
'port':3306,
'user':'root',
'password':''
} #用户权限认证
def db_auth(user_type,pwd):
if database['user'] == user_type and database['password'] == pwd:
print('db authentication passed!')
return True
else:
print('db login error...') #查询资源
def select(table,user_type,pwd):
if db_auth(user_type,pwd):
if table == 'user':
user_info = {
'':['alex',22,'engineer'],
'':['longge',43,'chef'],
'':['xiaoyun',23,'13baoan']
}
return user_info #显示进入页面信息
def home():
print('welcome to home page')
q_data = select('user','root','')
print('query res(查询资源)',q_data)
def movie():
print('welcome to movie page') if __name__ == '__main__':
home()

  感觉是不是易读性不差?我们今天不谈这个,就谈怎么用模块实现这个程序

模块编程

  首先在我们要有个配置文件,来存储配置信息,就上面程序说到的数据源

  

database = {
'engine':'mysql',
'host':'localhost',
'port':3306,
'user':'root',
'password':''
}

  其次要有数据库认证,并返回信息的文件

  

from config import settings

def db_auth(configs):
if configs.database['user'] == 'root' and configs.database['password'] == '':
print('db authentication passed!')
return True
else:
print('db login error.....') def select(table,column):
if db_auth(settings):
if table == 'user':
user_info = {
'':['alex',22,'engineer'],
'':['longge',43,'chef'],
'':['xiaoyun',23,'13baoan']
}
return user_info

  再次,我们要有个显示主程序页面信息的文件

  

from backend.db.sql_api import select

def home():
print('welcome to home page')
q_data = select('user','ddd')
print('query res:',q_data) def movie():
print('welcome to movie page') def tv():
print('welcome to tv page')

  最后,再设置一个主程序入口文件就可以了

  

import sys
import os
dizhi = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(dizhi) from backend.logic import handle handle.home()

  好!差不多用模块对程序的功能分类好了,不过在导模块的时候,要注意我要导的模块时是否在sys.path里的路径下

  最后的最后,模块编程是怎么帮我增加易读性和加速拍错的??

  

  我们从主入口入手,顺着模块给我们的信息往上爬,跟爬楼梯一样的,最终会看到我们想要的信息

                                            欢迎大家对我的博客内容提出质疑和提问!谢谢

                                                                             笔者:拍省先生 

最新文章

  1. Sublime Text永久设置使用4个空格缩进
  2. IE7中绝对定位元素之间的遮盖问题
  3. WeakHashMap回收时机
  4. VS2005保存文件很慢
  5. 什么是USBMini接口
  6. 文件和目录之umask函数
  7. PAT 1014. Waiting in Line
  8. 201521123108 《Java程序设计》第4周学习总结
  9. Golang源码探索(一) 编译和调试源码
  10. 爬虫(五)requests模块2
  11. Android Studio 学习(四) 数据库
  12. SQLServer图数据库一些优点
  13. java 各种循环遍历
  14. volatile和synchronized
  15. linux mongodb 及php-mongo扩展安装
  16. 【转】在64位windows下使用instsrv.exe和srvany.exe创建windows服务
  17. 【Android】3.12 兴趣点( POI)搜索功能
  18. PL/SQL如何调试Oracle存储过程
  19. 2016"百度之星" - 初赛(Astar Round2B)1003 瞬间移动 组合数学+逆元
  20. [浪风推荐]javascritp中倒计定时器和循环定时器

热门文章

  1. 2017.7.27 logback配置文件
  2. 2017.7.18 linux下用户、组和文件的操作
  3. MSSQL站库分离情况的渗透思路
  4. Laravel之认证服务
  5. Activity和Service交互之bindService(回调更新UI)
  6. python——定时闹钟讲解
  7. 【VBA】获取Excle的安装路径
  8. 基于Android平台的简易人脸检测库
  9. linux本地文件上传之RZ/SZ和sftp
  10. LINQ中Aggregate的用法