Python模块的导入以及软件开发规范
Python文件的两种用途
1 . 当脚本直接使用,直接当脚本运行调用即可
def func():
print("from func1")
func()
2 . 当做模块被导入使用,但是又想测试当前脚本是否能正常运行就是用if name == 'main':
def func():
print("from func1")
if __name__ == '__main__':
func()
绝对导入和相对导入
我们在创建包时,是给别人导入引用的,而在包的内部也会有彼此之间的互相导入的需求,这时候就有了,相对导入和绝对导入
绝对导入:以包名做为起始
相对导入:用.或者..的方式作为起始(只能在一个包中使用,不能用于不同的目录内)
目录关系:
glance/ # 顶层包目录
├── __init__.py
├── api # 子层 api
│ ├── __init__.py
│ ├── policy.py
│ └── versions.py
├── cmd # 子层 cmd
│ ├── __init__.py
│ └── manage.py
└── db # 子层 db
├── __init__.py
│
└── models.py
run.py
文件内容:
#policy.py
def get():
print('from policy.py')
#versions.py
def create_resource(conf):
print('from version.py: ',conf)
#manage.py
def main():
print('from manage.py')
#models.py
def register_models(engine):
print('from models.py: ',engine)
例如:我们在glance/api/version.py中想要导入glance/cmd/manage.py
在glance/api/version.py
#绝对导入
from glance.cmd import manage
manage.main()
#相对导入..上两层目录
from ..cmd import manage
manage.main()
当模块包的路径不在一起时,可以直接将模块包glance_v1的上级路径加入到环境sys.path路径中
import sys
sys.path.append(r"C:\Users\Dpad\PycharmProjects\python\module")
import glance_v1
glance_v1.get()
软件开发规范:
一个项目应该由多个目录文件组成,每个目录存在配置的不同意义:
├── ATM
│ ├── bin # 程序启动目录 (start.py执行程序文件)
│ │ ├── start.py
│ ├── core # 程序主逻辑目录
│ │ └── src.py
│ ├── conf # 程序配置目录
│ │ ├── settings.py
│ ├── db # 程序数据目录
│ │ ├── mysql
│ ├── lib # 程序包管理目录
│ │ ├── glance_v1
│ │ └── common.py
│ ├── log # 程序日志目录
│ │ ├── acess.log
└───────└
在bin执行start.py文件下,想调用所有项目目录下的程序需要将ATM的路径加入到sys.path路径中:
cat /ATM/bin/start.py
import sys,os
# os.path.abspath(__file__) # 表示当前程序文件start.py所在位置;
# os.path.dirname(os.path.abspath(__file__)) # start.py所在位置的上级目录
# os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # start.py所在位置的上上级目录,也就是ATM所在目录
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
Python模块的导入以及软件开发规范的更多相关文章
- Python进阶(十)----软件开发规范, time模块, datatime模块,random模块,collection模块(python额外数据类型)
Python进阶(十)----软件开发规范, time模块, datatime模块,random模块,collection模块(python额外数据类型) 一丶软件开发规范 六个目录: #### 对某 ...
- python 全栈开发,Day29(昨日作业讲解,模块搜索路径,编译python文件,包以及包的import和from,软件开发规范)
一.昨日作业讲解 先来回顾一下昨日的内容 1.os模块 和操作系统交互 工作目录 文件夹 文件 操作系统命令 路径相关的 2.模块 最本质的区别 import会创建一个专属于模块的名字, 所有导入模块 ...
- python之模块、包的导入过程和开发规范
摘要:导入模块.导入包.编程规范 以My_module为例,My_module的代码如下: __all__ = ['name','read'] print('in mymodule') name = ...
- python中软件开发规范,模块,序列化随笔
1.软件开发规范 首先: 当代码都存放在一个py文件中时会导致 1.不便于管理,修改,增加 2.可读性差 3.加载速度慢 划分文件1.启动文件(启动接口)--starts文件放bin文件里2.公共文件 ...
- Python 3 软件开发规范
Python 3 软件开发规范 参考链接 http://www.cnblogs.com/linhaifeng/articles/6379069.html#_label14 对每个目录,文件介绍. #= ...
- python(37)- 软件开发规范
软件开发规范 一.为什么要设计好目录结构? 1.可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等.从而非常快速的了解这个项目. 2 ...
- python软件开发规范&分文件对于后期代码的高效管理
根据本人的学习,按照理解整理和补充了python模块的相关知识,希望对于一些需要了解的python爱好者有帮助! 一.软件开发规范--分文件 当代码存在一个py文件中时: 1.不便于管理 (修改,增加 ...
- day16 循环导入、模块搜索路径、软件开发、包的使用
day16 循环导入.模块搜索路径.软件开发.包的使用 1.循环导入 循环导入:循环导入问题指的是在一个模块加载/导入的过程中导入另外一个模块,而在另外一个模块中又返回来导入第一个模块中的名字,由于第 ...
- Python 入门之 软件开发规范
Python 入门之 软件开发规范 1.软件开发规范 -- 分文件 (1)为什么使用软件开发规范: 当几百行--大几万行代码存在于一个py文件中时存在的问题: 不便于管理 修改 可读性差 加载速度慢 ...
随机推荐
- SQL Server - 约束 CONSTRAINT
总结 约束放置在表中,以下五种约束: NOT NULL 非空约束C 指定的列不允许为空值 UNIQUE 唯一约束U 指定的列中没有重复值,或该表中每一个值或者每一组值都将是唯一的 PRIMARY KE ...
- 在Linux环境下使用Apache部署ASP.NET Core
在前几篇文章中我们一起探讨了如何在Linux环境中安装ASP.NET Core运行时环境及将ASP.NET Core项目部署在Jexus中,这篇文章中我们将探讨如何将ASP.NET Core部署于Ap ...
- MD5 与 SHA 在 Delphi 中函数实现,加密密码
MD5 与 SHA 在 Delphi 中函数实现. 为了加密密码,必须使用一种算法,查询资料,比较好的方法是使用:MD5等算法,参考:Delphi XE8 支持MD5 第一种方式是:引用 System ...
- js 常用的工具函数
1 类型判断 isString (o) { //是否字符串 return Object.prototype.toString.call(o).slice(8, -1) === 'String' } i ...
- ansible笔记(6):常用模块之命令类模块
ansible笔记():常用模块之命令类模块 command模块 command模块可以帮助我们在远程主机上执行命令 注意:使用command模块在远程主机中执行命令时,不会经过远程主机的shell处 ...
- maven本地上传jar包
maven本地上传jar包 在命令行中输入下面指令(是一行): mvn install:install-file -Dfile=D:\mvn\spring-context-support-3.1.0. ...
- vue 安装之路
vue 来源 1.安装node.js(http://www.runoob.com/nodejs/nodejs-install-setup.html) 2.基于node.js,利用淘宝npm镜像安装相关 ...
- sql 迈安
SELECT b.* FROM dbo.[耕地肥料_01土壤肥料机构建设基本情况]as b ,bs_org where--县(b.任务id in((select bs_task.id--,bs_org ...
- SQLPLUS 命令
定制:sql提示符信息 1.显示SQLPLUS帮助,命令如下:HELP INDEX @ COPY PAUSE SHUTDOWN @@ DEFINE PRINT SPOOL / DEL PROMPT S ...
- Oracle+PL+SQL从入门到精通.丁士锋.清华大学出版社.2012
\t第1篇 pl/sql开发入门第1章 oracle 11g数据库系统1.1 关系型数据库系统介绍1.1.1 什么是关系型数据模型1.1.2 数据库系统范式1.1.3 关系型数据库管理系统1.1.4 ...