• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > Python开发编码规范

Python开发编码规范

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了python编码规范,python 中文编码,python utf8编码,python设置编码,python 编码格式等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
这篇文档所给出的编码约定适用于在主要的Python发布版本中组成标准库的Python   代码,请查阅相关的关于在Python的C实现中C代码风格指南的描述。
这篇文档改编自Guido最初的《Python风格指南》一文,并从《Barry's style guide》中添加了部分内容。在有冲突的地方,Guide的风格规则应该是符合本PEP的意图(译注:指当有冲突时,应以Guido风格为准)。这篇PEP仍然尚未完成(实际上,它可能永远都不会完成)。
  在这篇风格指导中的一致性是重要的。在一个项目内的一致性更重要。在一个模块或函数内的一致性最重要。但最重要的是:知道何时会不一致——有时只是没有实施风格指导。当出现疑惑时,运用你的最佳判断,看看别的例子,然后决定怎样看起来更好。并且要不耻下问!
  打破一条既定规则的两个好理由:
(1)     当应用这个规则是将导致代码可读性下降,即便对某人来说,他已经习惯于按这条规则来阅读代码了。
(2)     为了和周围的代码保持一致而打破规则(也许是历史原因),虽然这也是个清除其它混乱的好机会(真正的XP风格)。

代码的布局
  缩进
使用Emacs的Python-mode的默认值:4个空格一个缩进层次。对于确实古老的代码,你不希望产生混乱,可以继续使用8空格的制表符(8-space tabs)。Emacs Python-mode自动发现文件中主要的缩进层次,依此设定缩进参数。

制表符还是空格
  永远不要混用制表符和空格。最流行的Python缩进方式是仅使用空格,其次是仅使用制表符,混合着制表符和空格缩进的代码将被转换成仅使用空格。(在Emacs中,选中整个缓冲区,按ESC-x去除制表符。)调用Python命令行解释器时使用-t选项,可对代码中不合法得混合制表符和空格发出警告,使用-tt时警告将变成错误。这些选项是被高度推荐的。
  对于新的项目,强烈推荐仅使用空格而不是制表符。许多编辑器拥有使之易于实现的功能(在Emacs中,确认indent-tabs-mode是nil)。

行的最大长度
  周围仍然有许多设备被限制在每行80字符:而且,窗口限制在80个字符。使将多个窗口并排放置成为可能。在这些设备上使用默认的折叠方式看起来有点丑陋。因此,请将所有行限制在最大79字符(Emacs准确得将行限制为长80字符),对顺序排放的大块文本(文档字符串或注释),推荐将长度限制在72字符。
  折叠长行的首选方法是使用Pyhon支持的圆括号,方括号和花括号内的行延续。如果需要,你可以在表达式周围增加一对额外的圆括号,但是有时使用反斜杠看起来更好,确认恰当得缩进了延续的行。
  Emacs的Python-mode正确得完成了这些。一些例子:
#!Python
  class Rectangle(Blob):
    def __init__(self,width,height,color='black',emphasis=None,highlight=0):
        if width == 0 and height == 0 and \
          color == 'red' and emphasis == 'strong' or \
          highlight > 100:
          raise ValueError, "sorry, you lose"
        if width == 0 and height == 0 and (color == 'red' or
                              emphasis is None):
          raise ValueError,"I don't think so"
        Blob.__init__(self,width,height,color,emphasis,highlight)

空行
  用两行空行分割顶层函数和类的定义,类内方法的定义用单个空行分割,额外的空行可被用于(保守的)分割相关函数组成的群,在一组相关的单句中间可以省略空行。(例如:一组哑元素)。
  当空行用于分割方法的定义时,在‘class'行和第一个方法定义之间也要有一个空行。在函数中使用空行时,请谨慎的用于表示一个逻辑段落。Python接受contol-L(即^L)换页符作为空格:Emacs(和一些打印工具),视这个字符为页面分割符,因此在你的文件中,可以用他们来为相关片段分页。

编码
  Python核心发布中的代码必须始终使用ASCII或Latin-1编码(又名 ISO-8859-1),使用ASCII的文件不必有编码cookie,Latin-1仅当注释或文档字符串涉及作者名字需要Latin-1时才被使用:
  另外使用\x转义字符是在字符串中包含非ASCII(non-ASCII)数据的首选方法。
  作为PEP 263实现代码的测试套件的部分文件是个例外。

导入
  通常应该在单独的行中导入(Imports),例如:
No:import sys, os
Yes:import sys
    import os
  但是这样也是可以的:
  from types import StringType, ListType
  Imports 通常被放置在文件的顶部,仅在模块注释和文档字符串之后,在模块的全局变量和常量之前。Imports应该有顺序地成组安放:
1、标准库的导入(Imports )
  2、相关的主包(major package)的导入(即,所有的email包在随后导入)
  3、特定应用的导入(imports)
  你应该在每组导入之间放置一个空行,对于内部包的导入是不推荐使用相对导入的,对所有导入都要使用包的绝对路径。
  从一个包含类的模块中导入类时,通常可以写成这样:
    from MyClass import MyClass
    from foo.bar.YourClass import YourClass
  如果这样写导致了本地名字冲突,那么就这样写
    import MyClass
    import foo.bar.YourClass
  即使用"MyClass.MyClass"和"foo.bar.YourClass.YourClass"

表达式和语句中的空格
  Guido不喜欢在以下地方出现空格:
  紧挨着圆括号,方括号和花括号的,如:"spam( ham[ 1 ],{ eggs:2 } )"。要始终将它写成"spam(ham[1],{eggs: 2})"。
  紧贴在逗号,分号或冒号前的,如:
    "if x == 4:print x,y:x,y = y,x"。要始终将它写成
    "if x == 4:print x,y:x,y = y,x"。
紧贴着函数调用的参数列表前开式括号(open parenthesis )的,如"spam (1)"。要始终将它写成"spam(1)"。
紧贴在索引或切片,开始的开式括号前的,如:
  "dict ['key'] = list [index]"。要始终将它写成"dict['key'] = list[index]"。
  在赋值(或其它)运算符周围的用于和其它并排的一个以上的空格,如:
#!Python
      x= 1
      y= 2
      long_variable = 3
要始终将它写成
#!Python
      x = 1
      y = 2
      long_variable = 3
  (不要对以上任意一条和他争论——Guido 养成这样的风格超过20年了。)

其它建议
  始终在这些二元运算符两边放置一个空格:赋值(=), 比较(==,<,>,!=,<>,<=,     >=,in,not in,is,is not),布尔运算 (and,or,not)。
  按你的看法在算术运算符周围插入空格。 始终保持二元运算符两边空格的一致。
  一些例子:
#!Python
      i = i+1
      submitted = submitted + 1
      x = x*2 - 1
      hypot2 = x*x + y*y
      c = (a+b) * (a-b)
      c = (a + b) * (a - b)
  不要在用于指定关键字参数或默认参数值的'='号周围使用空格,例如:
#!Python
      def complex(real, imag=0。0):
        return magic(r=real, i=imag)

您可能想查找下面的文章:

  • Python编码爬坑指南(必看)
  • python编码最佳实践之总结
  • python编码最佳实践之总结
  • Python开发编码规范

相关文章

  • 在GitHub Pages上使用Pelican搭建博客的教程
  • python socket网络编程步骤详解(socket套接字使用)
  • Python实现的数据结构与算法之队列详解
  • python学习笔记:字典的使用示例详解
  • python实现爬虫下载漫画示例
  • 使用Python装饰器在Django框架下去除冗余代码的教程
  • 在Python中使用zlib模块进行数据压缩的教程
  • python动态加载变量示例分享
  • 精确查找PHP WEBSHELL木马的方法(1)
  • Python新手实现2048小游戏

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Python中下划线的使用方法
    • 详解python 字符串和日期之间转换 StringAndDate
    • Python实现冒泡,插入,选择排序简单实例
    • Python函数式编程指南(三):迭代器详解
    • Python构造自定义方法来美化字典结构输出的示例
    • python实现将元祖转换成数组的方法
    • Python 文件操作实现代码
    • 解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
    • 在Python中处理列表之reverse()方法的使用教程
    • 通过mod_python配置运行在Apache上的Django框架

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有