在Python社区中有许多关于代码风格的约定。如果你写过一段时间Python了,那么也许对此已经有些了解。 我会简单介绍一下,同时给你一些URL链接,从中你可以找到关于这个话题的详细信息。

让我们提出一个PEP!

PEP全称是“Python Enhancement Proposal”(Python增强提案)。你可以在python.org上找到它们以及对应的索引目录。 PEP在索引目录中按照数字编号排列,包括了元PEP(meta-PEP,讨论关于PEP的细节)。与之对应的是技术PEP(technical PEP),思考的是诸如Python内部实现的改良这样的话题。

有一些PEP,比如PEP 8和PEP 257,影响了Python代码风格的标准。 PEP 8包括了Python代码风格的规约。 而PEP 257包括了文档字符串(docstrings, 在Python中给代码加文档的标准方式)的规约。

PEP 8: Python代码风格规约

PEP 8是对Python代码风格的官方规约。 我建议你阅读它并将之付诸在Flask项目(以及其他Python项目)的开发实践中。 当项目规模膨胀到多个包含成百上千行代码的文件时,这样做会使你的代码更加工整、了然。毕竟PEP 8的建议都是围绕着实现更加可读的代码这个目标。 另外,如果你的项目准备开源,潜在的奉献者(contributors)会很高兴看到你的代码是遵循PEP 8的。

一个至关重要的建议是每级缩进使用4个空格。不要使用tab。 如果你打破了这个规约,它将会成为你(以及你的队友)在项目间切换的一个负担。 这种不一致一向是任意语言心中的痛,但是对于Python,一门着重留白的语言,这是一个不可承受之重。 因为tab与space之间的混搭会导致不可预期且难以排查的错误。

PEP 257: 文档字符串规约

PEP 257 覆盖了Python的另一项标准:docstrings。 你可以阅读PEP中的定义和相关建议,不过这里会给一个例子来展示一个文档字符串应该是怎样的:

def launch_rocket():
"""主要的火箭发射调度器 启动发射火箭所需的每一个步骤。
"""
# [...]

这种风格的文档字符串可以通过一些诸如Sphinx的软件来生成不同格式的文档。 同时它们也有助于让你的代码更加工整。

参见

相对形式的import

开发Flask应用时,使用相对形式的import会让你的生活更加轻松。 原因很简单。之前,当需要import一个内部模块时,你也许要显式指明应用的包名(the app's package name)。假设你想要从myapp/models.py中导入User模型:

# 使用绝对路径来导入User
from myapp.models import User

用了相对形式的import后,你可以使用点标记法:第一个.来表示当前目录,之后的每一个.表示下一个父目录。

# 使用相对路径来导入User
from .models import User

这种做法的好处在于使得package变得更加模块化了。 现在你可以重命名你的package并在别的项目中重用模块,而无需忍受更新被硬编码的包名之苦。

参见

  • 你可以在PEP 328的这一节里读到更多关于相对形式的import的语法
  • 在写作本书的过程中,我碰巧在这个Tweet上面看到了一个使用相对形式的import的好处:https://twitter.com/dabeaz/status/372059407711887360 Just had to rename our whole package. Took 1 second. Package relative imports FTW!

总结

  • 尽量遵循PEP 8中的代码风格规约。
  • 尽量遵循PEP 257中的文档字符串规约。
  • 使用相对形式的import来import你的应用中的内部模块。

python flask中的代码约定的更多相关文章

  1. 如何调用另一个python文件中的代码

    模块的搜索路径 模块的搜索路径都放在了sys.path列表中,如果缺省的sys.path中没有含有自己的模块或包的路径,可以动态的加入(sys.path.apend)即可.下面是sys.path在Wi ...

  2. [git]安装git-pylint-commit-hook提高python项目中的代码质量

    什么是'git-pylint-commit-hook' 我在工作中,团队为了保证代码和提高代码的质量,要求每个项目都要求安装git-pylint-commit-hook,它是个钩子,会在你提交代码到本 ...

  3. Python flask中的配置

    当你开始学习Flask时,配置看上去是小菜一碟.你仅仅需要在config.py定义几个变量,然后万事大吉. 然而当你不得不管理一个生产上的应用的配置时,这一切将变得棘手万分. 你不得不设法保护API密 ...

  4. 统计python文件中的代码,注释,空白对应的行数

    其实代码和空白行很好统计,难点是注释行 python中的注释分为以#开头的单行注释 或者以'''开头以'''结尾 或以"""开头以"""结尾 ...

  5. .net 调用 Python脚本中的代码

    使用工具:IronPython 工具介绍:是一种在 .NET 及 Mono上的 Python 实现,是一个开源的项目,基于微软的 DLR 引擎.(个人理解就是在 .net上面运行Python代码) 使 ...

  6. python Flask中html模版中如何引用css,js等资源

    已有静态页面,需要将其整合到瓶的项目中,需要搞清楚, 之前的HTML中的: <link rel =“stylesheet”href =“css / framework7.ios.css”> ...

  7. python调用另一个文件中的代码,pycharm环境下:同文件夹下文件(.py)之间的调用,出现红线问题

    如何调用另一个python文件中的代码无论我们选择用何种语言进行程序设计时,都不可能只有一个文件(除了“hello world”),通常情况下,我们都需要在一个文件中调用另外一个文件的函数呀数据等等, ...

  8. Python Flask高级编程之RESTFul API前后端分离精讲 (网盘免费分享)

    Python Flask高级编程之RESTFul API前后端分离精讲 (免费分享)  点击链接或搜索QQ号直接加群获取其它资料: 链接:https://pan.baidu.com/s/12eKrJK ...

  9. [python][flask] Flask 图片上传与下载例子(支持漂亮的拖拽上传)

    目录 1.效果预览 2.新增逻辑概览 3.tuchuang.py 逻辑介绍 3.1 图片上传 3.2 图片合法检查 3.3 图片下载 4.__init__.py 逻辑介绍 5.upload.html ...

随机推荐

  1. 毕加索的艺术——Picasso,一个强大的Android图片下载缓存库,OkHttpUtils的使用,二次封装PicassoUtils实现微信精选

    毕加索的艺术--Picasso,一个强大的Android图片下载缓存库,OkHttpUtils的使用,二次封装PicassoUtils实现微信精选 官网: http://square.github.i ...

  2. pig读取部分列 (全部列中的少部分列)

    pig流式数据,load数据时,不能读入任意列. 但是,可以从头读,只能连续几列.就是前几列.比如10列数据,可以只读前3列.但不能读第3列: 如:数据testdata [wizad@sr104 lm ...

  3. python安装json的方法;以及三种json库的区别

    python中的json解释库有好几个,不同版本使用方法不同. 常用有 json-py 与smiplejson 两个包 其中,json-py 包含json.py外,还有一个minjson,两者用法上有 ...

  4. 跨平台移动APP开发进阶(二)HTML5+、mui开发移动app教程

    前端开发APP,从HBuilder开始~ 序 通过 HTML5 开发移动App 时,会发现HTML5 很多能力不具备.为弥补HTML5 能力的不足,在W3C 中国的指导下成立了www.HTML5Plu ...

  5. Cocos2D v2.0至v3.x简洁转换指南(一)

    在该指南开头,我们假设你应经很熟悉Cocos2d 2.x版本. 我们将指出新版本重要的改变,并且给出一些你已经从Cocos2d 2.x版本中熟知的实现. CCNodes,CCScenes和CCLaye ...

  6. Picasso 图片加载库

    Picasso 英文意思国外一个很有名的画家毕加索的名字,国外项目取名还是很有意思的! 从github新下载的picasso项目有依赖其他第三方开源项目okhttp和okio,这两个项目也是相当经典的 ...

  7. 【算法编程】基于Miller-Rabin的大素数测试

    基本原理: 费尔马小定理:如果p是一个素数,且0<a<p,则a^(p-1)%p=1.        利用费尔马小定理,对于给定的整数n,可以设计素数判定算法,通过计算d=a^(n-1)%n ...

  8. Windows7驱动调试小Tips

    v:* { } o:* { } w:* { } .shape { }p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-botto ...

  9. unity连接数据库工具

    这里用的是一个集成工具UPUPW(Nginx+mysql+php版本) 网址:http://php.upupw.net/ 数据库登录: 本地: http://127.0.0.1/pmd 外网: htt ...

  10. 在AndroidManifest.xml文件中设置Android程序的启动界面方法

    从网上搜集了一堆的Android代码,比如Android的Login程序和Android的Helloworld程序,但是却总不能正确运行一个正确的程序,郁闷了很久,终于在一次一次的测试后成功的在And ...