阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

编程好习惯

117次阅读
没有评论

共计 1767 个字符,预计需要花费 5 分钟才能阅读完成。

一、python2 与 python3 的区别

1、性能

python3.x 起始比 python2.x 效率要低,但是 python3.x 有极大的优化空间,效率正在追赶,目前已经不差多少

2、编码

python3.x 原码文件默认使用 utf-8,使变量名更为广阔

3、语法

  • 去除了 <>,改用!=
  • / 除
    python2.x 整型触发返回整数
    python3.x 整型触发返回浮点数,整除使用 //
  • 加入了 nonlocal 语句

  • 去除了 print 语句,加入了 print() 函数

    print("zutuanxue_com", end=" ") print("zutuanxue_com")
  • 去除了 raw_input 语句,加入了 input() 函数

  • 新的 super(), 可以不再给 super() 传递参数

    class A(object): pass class B(A): def init(self): super().int()
  • 改变了顺序操作符的行为,比如 x <y,当 x 和 y 类型不匹配时抛出 TypeError 异常

  • 新式的 8 进制数字变量

4、字符串和字节串

  • python2.x 字符串以 8bit 字符串存储
  • python3.x 字符串以 16bit Unicode 字符串存储,现在字符串只有 str 一种类型

5、数据类型

  • python3.x 去除了 long 类型,现在只有一种整数类型 int,但是它的行为就像 2.x 中 long

  • 新增了 bytes 类型,对应 2.x 版的八位串

6、面向对象

引入抽象基类

7、异常

所有异常都从 BaseException 继承,并删除了 StardardError

python2 try: …… except Exception e: …… python3 try: …… except Exception as e: ……

8、其他

python2.x 中的 xrange() 在 python3.x 中名为 range()
file 类被废弃
python2 可以使用 file(path)、open(path)

二、PEP8 编码规范

网址:

英文教程:https://legacy.python.org/dev/peps/pep-0008/#a-foolish-consistency-is-the-hobgoblin-of-little-minds

中文教程:https://blog.csdn.net/ratsniper/article/details/78954852

1、代码编排

  • 缩进 4 个空格,禁止空格与 Tab 混用
  • 行长 79,防止单行的逻辑过于复杂
if 1: pass

2、命名

  • 除非在 lamdba 函数中,否则不要使用单字母的变量名,但是即使在 lamdba 函数中变量名也要尽可能有意义
  • 包名、模块名、函数名全部使用小写,单词使用下划线链接
  • 类名、异常名使用首字母大写的方法,异常名结尾加 Error 或者 Warning
  • 全局变量尽量使用大写,同一类型的全局变量要加同一的前缀,单词用下划线链接
  • 自定义的变量、函数名等不要与标准库名冲突
  • 函数名必须有动词,最好是 do_something 的句式或者 somebody_do_something 句式
COLOR_RED = 10 COLOR_BLUE = 11 f = lambda x: x+1 def func(x, y): pass def get_money(): pass

3、注释

  • 忌讳没有注释和逐行注释

  • 行内注释

    当行逻辑过于复杂添加

  • 块注释

    一段逻辑开始时注释

  • 引入外来算法或者配置时必须在注释中添加源链接,标明出处

  • 函数和类尽量添加 docstring

4、空格

  • :,; 后面要跟一个空格,前面没有空格,行尾分号无需空格

  • 二元操作符前后各一个空格

    数学运算符、比较运算符、逻辑运算符、位运算符

  • = 的注意事项:用于指示关键字参数或默认参数值时,不要添加空格

5、换行

  • 适当添加换行
  • 函数间

    • 顶级函数空间空 2 行

    • 类的方法空 1 行

  • 文件结尾留空一行

6、import

  • 不要使用 from xxx import *
  • 导入顺序 (标准库、第三方、自定义)
    • 标准库
    • 第三方库
    • 自定义库
  • 单行不要导入多个库
  • 模块内用不到的不要去 import

7、字符串拼接

  • 字符串相加(性能最差)

  • 字符串格式化

  • python3.6 支持 f 操作符

    >>> a = 111 >>> b=222 >>> c=333 >>> s = f"{a}-{b}-{c}" >>> s '111-222-333'
  • join 尽量使用 join 方法,因为速度快,内存消耗小

8、语义

要求明确、直白

not x in y x not in y not x is y x is not y

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-05-26发表,共计1767字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中