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

  

单文件编程

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

#数据源
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模块混战的更多相关文章

  1. python基础-第六篇-6.2模块

    python之强大,就是因为它其提供的模块全面,模块的知识点不仅多,而且零散---一个字!错综复杂 没办法,二八原则抓重点咯!只要抓住那些以后常用开发的方法就可以了,哪些是常用的?往下看--找答案~ ...

  2. python基础-第六篇-6.1生成器与迭代器

    迭代器 特点: 访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容 不能随机访问集合中的某个值 ,只能从头到尾依次访问 访问到一半时不能往回退 便于循环比较大的数据集合,节省 ...

  3. Python基础知识(六)------小数据池,集合,深浅拷贝

    Python基础知识(六)------小数据池,集合,深浅拷贝 一丶小数据池 什么是小数据池: ​ 小数据池就是python中一种提高效率的方式,固定数据类型使用同一个内存地址 代码块 : ​ 一个文 ...

  4. python基础系列教程——Python3.x标准模块库目录

    python基础系列教程——Python3.x标准模块库目录 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata ...

  5. NHibernate 组件基础 (第六篇)

    NHibernate 组件基础 (第六篇) 一.组件简介 组件(Component)可以理解为被一个对象所包含的对象而持久化,而并非一个实体.简单说来,假如数据库有FirstName,LastName ...

  6. Python开发【第六篇】:模块

    模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...

  7. Python 基础学习 总结篇

    Python 基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结 ...

  8. Python基础【第二篇】

    一.Python的标准数据类型 Python 3中主要有以下6中数据类型: Number(数字).String(字符串).List(列表).Tuple(元组).Sets(集合).Dictionary( ...

  9. Python开发【第*篇】【模块】

    模块分为三种: 自定义模块 第三方模块 内置模块 1.模块导入 import model from model.xx.xx import xx from model.xx.xx import xx a ...

随机推荐

  1. 计算机速度GHz等于每秒多少次

    这个是没有对比关系的.需要看处理器的微指令.计算机的GHz指的是CPU的时钟频率,不同的指令需要的时钟个数是不同的,列如,从内存读一个数据,一般需要4个时钟周期,而进行一次8位数的加法运算,一般需要1 ...

  2. 怎么windows10下设置始终以管理员身份运行

    怎么windows10下设置始终以管理员身份运行 学习了:https://jingyan.baidu.com/article/e2284b2b6e6df8e2e7118d7a.html 可以对快捷方式 ...

  3. Win7 无法将快捷方式从任务栏移除怎么办

    不知道是什么修改了系统的属性了.在网上找到了这个方法解决了:一:为了解决这个问题,你可以尝试下面的方法:    把以下命令分别输入到开始-运行中    1.cmd /k reg add "H ...

  4. C++ 智能指针详解(转)

    C++ 智能指针详解   一.简介 由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete.程序员忘记 delete,流程太复杂,最终导致没有 delete,异常 ...

  5. Nginx实现虚拟主机

    因为IP地址有限,因此经常存在多个主机域名对应着同一个IP地址的情况,可以通过配置虚拟主机来解决这个问题. 在nginx.conf中,每个server块就是一个虚拟主机,它只会处理与其server_n ...

  6. 【BIEE】01_下载安装BIEE(Business Intelligence)11g 11.1.1.9.0

    环境准备 安装文件 如果操作系统是64位,则下载64位版本,我安装的系统是64位的 1.下载所有安装文件 1.1 Oracle Database 11g R2 下载地址: http://www.ora ...

  7. DNS原理及其解析过程【精彩剖析】

    DNS原理及其解析过程[精彩剖析] 2012-03-21 17:23:10 标签:dig wireshark bind nslookup dns 原创作品,允许转载,转载时请务必以超链接形式标明文章 ...

  8. 聚类分析算法及SAS实现

    聚类分析是用户细分里面最为重要的工具,而用户细分则是整个精准营销里面的基础. 聚类分析方法分为: 层次法:可分为凝聚式和分列式,适用于观测数比较少的情形 1.凝聚式:将每个观测都归为一类,然后每次都将 ...

  9. Java Learning Path(三)过程篇

    Java Learning Path(三)过程篇 每个人的学习方法是不同的,一个人的方法不见得适合另一个人,我只能是谈自己的学习方法.因为我学习Java是完全自学的,从来没有问过别人,所以学习的过程基 ...

  10. C++中没有定义类的引用。

    在有时候由于类太大.须要在类在后面定义: 比如: class Y{ void f(X); }; class X{ //一些成员数据和函数 }; //error 由于c++要求不论什么一个变量在引用之前 ...