前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >编程好习惯

编程好习惯

作者头像
星哥玩云
发布2022-09-08 12:31:56
2230
发布2022-09-08 12:31:56
举报
文章被收录于专栏:开源部署

一、python2与python3的区别

1、性能

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

2、编码

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

3、语法

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

加入了nonlocal语句

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

代码语言:javascript
复制
print("zutuanxue_com", end=" ")
print("zutuanxue_com")

去除了raw_input语句,加入了input()函数

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

代码语言:javascript
复制
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

代码语言:javascript
复制
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,防止单行的逻辑过于复杂
代码语言:javascript
复制
if 1:
    pass

2、命名

  • 除非在lamdba函数中,否则不要使用单字母的变量名,但是即使在lamdba函数中变量名也要尽可能有意义
  • 包名、模块名、函数名全部使用小写,单词使用下划线链接
  • 类名、异常名使用首字母大写的方法,异常名结尾加Error或者Warning
  • 全局变量尽量使用大写,同一类型的全局变量要加同一的前缀,单词用下划线链接
  • 自定义的变量、函数名等不要与标准库名冲突
  • 函数名必须有动词,最好是do_something的句式或者somebody_do_something句式
代码语言:javascript
复制
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操作符

代码语言:javascript
复制
>>> a = 111
>>> b=222
>>> c=333
>>> s = f"{a}-{b}-{c}"
>>> s
'111-222-333'

join 尽量使用join方法,因为速度快,内存消耗小

8、语义

要求明确、直白

代码语言:javascript
复制
not x in y
x not in y
not x is y
x is not y
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、python2与python3的区别
    • 1、性能
      • 2、编码
        • 3、语法
          • 4、字符串和字节串
            • 5、数据类型
              • 6、面向对象
                • 7、异常
                  • 8、其他
                  • 二、PEP8编码规范
                    • 1、代码编排
                      • 2、命名
                        • 3、注释
                          • 4、空格
                            • 5、换行
                              • 6、import
                                • 7、字符串拼接
                                  • 8、语义
                                  领券
                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档