python基础-第六篇-6.4模块混战
2024-09-28 09:18:04
我们之前接触多的编程方式就是函数式编程,而且喜欢就一个文件里写完所有的程序代码,这样做在前期感觉还不错,不过一旦你的程序变复杂,在易读性和排错方面就感觉好吃力,功能界限不明显,那今天我们就来讲讲怎么用模块进行功能分类
单文件编程
来!先看一个用单文件函数式编程实现所有的功能的例子
#数据源
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里的路径下
最后的最后,模块编程是怎么帮我增加易读性和加速拍错的??
我们从主入口入手,顺着模块给我们的信息往上爬,跟爬楼梯一样的,最终会看到我们想要的信息
欢迎大家对我的博客内容提出质疑和提问!谢谢
笔者:拍省先生
最新文章
- Sublime Text永久设置使用4个空格缩进
- IE7中绝对定位元素之间的遮盖问题
- WeakHashMap回收时机
- VS2005保存文件很慢
- 什么是USBMini接口
- 文件和目录之umask函数
- PAT 1014. Waiting in Line
- 201521123108 《Java程序设计》第4周学习总结
- Golang源码探索(一) 编译和调试源码
- 爬虫(五)requests模块2
- Android Studio 学习(四) 数据库
- SQLServer图数据库一些优点
- java 各种循环遍历
- volatile和synchronized
- linux mongodb 及php-mongo扩展安装
- 【转】在64位windows下使用instsrv.exe和srvany.exe创建windows服务
- 【Android】3.12 兴趣点( POI)搜索功能
- PL/SQL如何调试Oracle存储过程
- 2016";百度之星"; - 初赛(Astar Round2B)1003 瞬间移动 组合数学+逆元
- [浪风推荐]javascritp中倒计定时器和循环定时器