python基础-第六篇-6.4模块混战
我们之前接触多的编程方式就是函数式编程,而且喜欢就一个文件里写完所有的程序代码,这样做在前期感觉还不错,不过一旦你的程序变复杂,在易读性和排错方面就感觉好吃力,功能界限不明显,那今天我们就来讲讲怎么用模块进行功能分类
单文件编程
来!先看一个用单文件函数式编程实现所有的功能的例子
#数据源
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里的路径下
最后的最后,模块编程是怎么帮我增加易读性和加速拍错的??

我们从主入口入手,顺着模块给我们的信息往上爬,跟爬楼梯一样的,最终会看到我们想要的信息
欢迎大家对我的博客内容提出质疑和提问!谢谢
笔者:拍省先生
python基础-第六篇-6.4模块混战的更多相关文章
- python基础-第六篇-6.2模块
python之强大,就是因为它其提供的模块全面,模块的知识点不仅多,而且零散---一个字!错综复杂 没办法,二八原则抓重点咯!只要抓住那些以后常用开发的方法就可以了,哪些是常用的?往下看--找答案~ ...
- python基础-第六篇-6.1生成器与迭代器
迭代器 特点: 访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容 不能随机访问集合中的某个值 ,只能从头到尾依次访问 访问到一半时不能往回退 便于循环比较大的数据集合,节省 ...
- Python基础知识(六)------小数据池,集合,深浅拷贝
Python基础知识(六)------小数据池,集合,深浅拷贝 一丶小数据池 什么是小数据池: 小数据池就是python中一种提高效率的方式,固定数据类型使用同一个内存地址 代码块 : 一个文 ...
- python基础系列教程——Python3.x标准模块库目录
python基础系列教程——Python3.x标准模块库目录 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata ...
- NHibernate 组件基础 (第六篇)
NHibernate 组件基础 (第六篇) 一.组件简介 组件(Component)可以理解为被一个对象所包含的对象而持久化,而并非一个实体.简单说来,假如数据库有FirstName,LastName ...
- Python开发【第六篇】:模块
模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...
- Python 基础学习 总结篇
Python 基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结 ...
- Python基础【第二篇】
一.Python的标准数据类型 Python 3中主要有以下6中数据类型: Number(数字).String(字符串).List(列表).Tuple(元组).Sets(集合).Dictionary( ...
- Python开发【第*篇】【模块】
模块分为三种: 自定义模块 第三方模块 内置模块 1.模块导入 import model from model.xx.xx import xx from model.xx.xx import xx a ...
随机推荐
- 用反射来了解Java中泛型的本质
这篇文章主要通过Class的Method来了解泛型的本质. 先new 两个List,一个不加类型限制,另外一个限制类型为String: ArrayList list = new ArrayList() ...
- debug模式下dlgdata.cpp line 43 断言失败
我在VC6下显示Line 43, Line 624行失败 网上有Line 40行猜测是其他版本 运行程序出错,定位如下: HWND CDataExchange::PrepareCtrl(int nID ...
- JAVA_Exception starting filter struts2怎么办
1 请确保你的项目里面有这两个文件,没有则导入 2 如果还不行,并且你设置了Struts的开发模式,并且你的Tomcat的路径有空格,大部分情况是Program File的原因,此时你需要重新安装 ...
- Laravel之HTTP相应
一.基本相应示例 1.返回简单字符串 Route::get('/', function () { return 'Hello World'; }); 给定的字符串会被框架自动转化为 HTTP 响应 2 ...
- 使用LBS(地理位置)
一.使用之前的简单封装的OkHttpUtil http://www.cnblogs.com/itfenqing/p/6758909.html 二.关键代码: public class MainActi ...
- Linux——学习环境搭建
终于决定将学习环境彻底转到Linux上来,下面记录一下转移学习环境的各种软件和环境的安装和配置. 1.centos自带python2.6,之前的博文已经说到已成功更新到python3.3,下面首先安装 ...
- d3.js封装文本实现自动换行和旋转平移等功能
我们下面话不多说,本文主要介绍的是利用D3.js封装文本实现自动换行功能的步骤,下面来一起看看吧. 一.引用 multext.js 文件 multext.js function appendMulti ...
- c语言用rand() 函数,实现random(int m)
函数rand()是真正的随机数生成器.而srand()会设置供rand()使用的随机数种子. 假设你在第一次调用rand()之前没有调用srand(),那么系统会为你自己主动调用srand(). 注意 ...
- ddmrp
DDMRP 特点 在供应链加入 mts 缓冲,解耦 lead time, 缩小 bullwhip 效应,最小化库存 buffer动态调整 buffer 分3个颜色共 4个区域[zone],为 gree ...
- TCP应用程序通信协议的处理
TCP应用程序通信协议的处理 flyfish 2015-6-29 一 流式处理 TCP是一种流协议(stream protocol).TCP数据是以字节流的形式传递给接收者的,没有固有的"报 ...