zoukankan      html  css  js  c++  java
  • python基础-第六篇-6.4模块混战

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

      

    单文件编程

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

    #数据源
    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里的路径下

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

      

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

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

                                                                                 笔者:拍省先生 

  • 相关阅读:
    [Leetcode][动态规划] 零钱兑换
    [Linux][函数]flock函数的用法
    [Leetcode][动态规划] 买卖股票的最佳时机IV
    [C++] 类的设计(2)——拷贝控制(1)
    [C++] C++中的常用库
    Python 爬虫学习笔记2
    Python 爬虫学习笔记1
    Tableau学习笔记:join
    可视化文摘:multifaceted data and story
    可视化学习笔记8:一般设计技巧
  • 原文地址:https://www.cnblogs.com/xinsiwei18/p/5645644.html
Copyright © 2011-2022 走看看