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里的路径下

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

  

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

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

                                                                             笔者:拍省先生 

时间: 2024-10-05 19:27:30

python基础-第六篇-6.4模块混战的相关文章

python基础-第六篇-6.2模块

python之强大,就是因为它其提供的模块全面,模块的知识点不仅多,而且零散---一个字!错综复杂 没办法,二八原则抓重点咯!只要抓住那些以后常用开发的方法就可以了,哪些是常用的?往下看--找答案~ 模块定义 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成 (函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块.

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

迭代器 特点: 访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容 不能随机访问集合中的某个值 ,只能从头到尾依次访问 访问到一半时不能往回退 便于循环比较大的数据集合,节省内存 names = iter(['alex','wupeiqi','eva']) print(names) print(names.__next__()) print(names.__next__()) print(names.__next__()) #在往下取就报错 # print(names.

NHibernate 组件基础 (第六篇)

NHibernate 组件基础 (第六篇) 一.组件简介 组件(Component)可以理解为被一个对象所包含的对象而持久化,而并非一个实体.简单说来,假如数据库有FirstName,LastName这两个字段,我们在C#中可以将这两个字段提取出来作为一个Name对象使用. 示例,首先建一张表,并添加数据如下: Person.hbm.xml <?xml version="1.0" encoding="utf-8" ?> <hibernate-map

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

python基础系列教程——Python3.x标准模块库目录 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata:Unicode字符数据库 stringprep:互联网字符串准备工具 readline:GNU按行读取接口 rlcompleter:GNU按行读取的实现函数 二进制数据 struct:将字节解析为打包的二进制数据 codecs:注册表与基类的编解码器 数据类型 datetime:基于日期与时间工具

Python开发【第六篇】:模块

模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块. 如:os 是系统相关的模块:file是文件操作相关的模块 模块分为三种: 自定义模块 第三方模块 内置模块 自定义模块 1.定义模块 情景一: 情景二: 情景三: 2.导入模块 Python之所以应用越来越广泛,

python基础1--小结篇

如果有别的编程语言基础,python属于极好上手的一门语言.应用上,用“自取所需”来描述,最为贴切. 首先,放上一些推荐. 安装上: 1.python3.5.1(推荐官网直接下载,自带IDLE),安装不麻烦,记得增加环境变量即可 2.编辑器:sublime 其实,并没有使用很多,但是推荐的人超多 ,破解版网上很多,按资源下载即可 3.IDE: 强推 pycharm 对JetBrains软件执着的热爱  方便又美观 网上能找到找到注册码,学生用edu邮箱可以免费使用,当然,支持正版! 熟悉上: 语

Python基础学习 总结篇

Python基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结构(概要) Python学习(四)数据结构 —— int float Python学习(四)数据结构 —— str Python学习(四)数据结构 —— bool Python学习(四)数据结构 —— list tuple range Python学习(四)数据结构 —— set frozenset

Python基础第三篇

一.collections系列 Counter是对字典类型的补充,用于追踪值的出现次数,具备字典的所有功能 + 自己的功能 1.计数器Counter import collections a='abababsbsbhh' c=collections.Counter(a) #直接列出每个元素出现了几次,传入列表和元组也一样 print(c) #输出:Counter({'b': 5, 'a': 3, 'h': 2, 's': 2}) #most_common 列出Counter内的前几个 print

python基础知识六 文件的基本操作+菜中菜

基础知识六 文件操作 ? open():打开 ? file:文件的位置(路径) ? mode:操作文件模式 ? encoding:文件编码方式 ? f :文件句柄 f = open("1.txt",mode = 'r',encoding = 'utf-8') print(f.read()) f.close 1.文件操作模式: ? r,w,a(重要) ? rb,wb,ab(次要) ? r+,w+,a+ 1.1 r/w/a 1. r操作: f = open('1.txt','r') pri