python软件开发目录_学习python的第十九天(包,软件开发目录规范)

6.10自我总结

1.包

1.什么是包

包是模块的一种形式,包的本质就是一个含有__init__.py的文件的文件夹

2.为什么用包

当一个模块功能太多的时候不方便进行管理,我们用包来进行管理

3.包的使用

1.导入包发生的三件事

创建一个包的名称空间

由于包是一个文件夹,无法执行包,因此执行包下的__init__.py文件,将执行过程中产生的名字存放于包名称空间中(即包名称空间中存放的名字都是来自于__init__.py)且init中文件执行导入文件的路径以运行文件为基准

在执行文件中使用包内的名称,是指向包的名称空间

2.包的两种导入方式

import ...

from ... import...

两种导入方式与模块的相似,只是导入包的时候运行的是包里面的init文件

3.个人理解包导入的两种方式路径的写法

关于.的使用,在(from.)是当前目录.(from..)当前文件目录的上一级,.要和from连用才有当前目录,上一级目录说法,(import.)不是当前,import相当于python的环境配置路径

2.软件开发目录规范

为了提高程序的可读性与可维护性,我们应该为软件设计良好的目录结构,这与规范的编码风格同等重要,简而言之就是把软件代码分文件目录。假设你要写一个atm软件,你可以按照下面的目录结构管理你的软件代码:

atm/

|-- core/

| |-- src.py # 业务核心逻辑代码

|

|-- api/

| |-- api.py # 接口文件

|

|-- db/

| |-- db_handle.py # 操作数据文件

| |-- db.txt # 存储数据文件

|

|-- lib/

| |-- common.py # 共享功能

|

|-- conf/

| |-- settings.py # 配置相关

|

|-- bin/

| |-- run.py # 程序的启动文件,一般放在项目的根目录下,因为在运行时会默认将运行文件所在的文件夹作为sys.path的第一个路径,这样就省去了处理环境变量的步骤

|

|-- log/

| |-- log.log # 日志文件

|

|-- requirements.txt # 存放软件依赖的外部python包列表,详见https://pip.readthedocs.io/en/1.1/requirements.html

|-- readme # 项目说明文件

# run.py

import sys

import os

base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

sys.path.append(base_dir)

from core import src

if __name__ == '__main__': #是导入run的时候不会调用函数

src.run()

# settings.py

import os

base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

db_path = os.path.join(base_dir, 'db', 'db.txt')

log_path = os.path.join(base_dir, 'log', 'user.log')

# print(db_path)

# print(log_path)

# src.py

from conf import settings

from lib import common

def login():

print('登陆')

def register():

print('注册')

name = input('username>>: ')

pwd = input('password>>: ')

with open(settings.db_path, mode='a', encoding='utf-8') as f:

f.write('%s:%s\n' % (name, pwd))

# 记录日志。。。。。。

common.logger('%s注册成功' % name)

print('注册成功')

def shopping():

print('购物')

def pay():

print('支付')

def transfer():

print('转账')

func_dic = {

'1': login,

'2': register,

'3': shopping,

'4': pay,

'5': transfer,

}

def run():

while true:

print("""

1 登陆

2 注册

3 购物

4 支付

5 转账

6 退出

""")

choice = input('>>>: ').strip()

if choice == '6': break

if choice not in func_dic:

print('输入错误命令,傻叉')

continue

func_dic[choice]()

# common.py

import time

from conf import settings

def logger(msg):

current_time = time.strftime('%y-%m-%d %x')

with open(settings.log_path, mode='a', encoding='utf-8') as f:

f.write('%s %s' % (current_time, msg))

希望与广大网友互动??

点此进行留言吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值