码迷,mamicode.com
首页 > 编程语言 > 详细

python基础-第六篇-6.4模块混战

时间:2016-07-06 09:58:45      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:

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

  

单文件编程

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

#数据源
database = {
    engine:mysql,
    host:localhost,
    port:3306,
    user:root,
    password:123
}

#用户权限认证
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 = {
                001:[alex,22,engineer],
                002:[longge,43,chef],
                003:[xiaoyun,23,13baoan]
            }
            return user_info


#显示进入页面信息
def home():
    print(welcome to home page)
    q_data = select(user,root,123)
    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:123
}

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

  技术分享

from config import settings

def db_auth(configs):
    if configs.database[user] == root and configs.database[password] == 123:
        print(db authentication passed!)
        return True
    else:
        print(db login error.....)

def select(table,column):
    if db_auth(settings):
        if table == user:
            user_info = {
                001:[alex,22,engineer],
                002:[longge,43,chef],
                003:[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模块混战

标签:

原文地址:http://www.cnblogs.com/xinsiwei18/p/5645644.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!