From 43ab2d4b1c3c8782b46d1ffe3caaba4ea2ed9252 Mon Sep 17 00:00:00 2001 From: xujian Date: Wed, 6 Dec 2023 03:28:30 +0000 Subject: [PATCH] =?UTF-8?q?update=20=E7=BC=96=E7=A0=81=E8=A7=84=E8=8C=83/o?= =?UTF-8?q?penKylin-python=E8=AF=AD=E8=A8=80=E9=80=9A=E7=94=A8=E7=BC=96?= =?UTF-8?q?=E7=A8=8B=E8=A7=84=E8=8C=83.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xujian --- ...26\347\250\213\350\247\204\350\214\203.md" | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git "a/\347\274\226\347\240\201\350\247\204\350\214\203/openKylin-python\350\257\255\350\250\200\351\200\232\347\224\250\347\274\226\347\250\213\350\247\204\350\214\203.md" "b/\347\274\226\347\240\201\350\247\204\350\214\203/openKylin-python\350\257\255\350\250\200\351\200\232\347\224\250\347\274\226\347\250\213\350\247\204\350\214\203.md" index 8dc8bab..4b706d9 100644 --- "a/\347\274\226\347\240\201\350\247\204\350\214\203/openKylin-python\350\257\255\350\250\200\351\200\232\347\224\250\347\274\226\347\250\213\350\247\204\350\214\203.md" +++ "b/\347\274\226\347\240\201\350\247\204\350\214\203/openKylin-python\350\257\255\350\250\200\351\200\232\347\224\250\347\274\226\347\250\213\350\247\204\350\214\203.md" @@ -152,7 +152,7 @@ yield和return语句只有在函数的上下文中才有意义。在函数外使 value = myint is mystring # Noncompliant. Always False value = myint is not mystring # Noncompliant. Always True -## 规则1.10 不应用使用自增和自减运算符(python:PreIncrementDecrement) +## 规则1.10 不应该使用自增和自减运算符(python:PreIncrementDecrement) 在Python编程语言中,没有前/后自增/自减运算符。例如x++和x--这样的语句会报语法解析错误。更重要是,++x和--x将不会做任何操作。要实现自增运算,应该写成x += 1。 ### 错误代码 @@ -161,6 +161,42 @@ yield和return语句只有在函数的上下文中才有意义。在函数外使 ### 正确代码 x += 1 +## 规则1.11 不应该做愚蠢的相等性检查(python:S2159) +在某些场景下,一些使用==或者!=运算符进行的比较语句将始终返回True或始终返回False。这些情况下,可以简单的删除比较语句及其所有相关的代码: + +1、比较不相关的内置类型,例如字符和整数 + +2、将一个没有实现__eq__和__ne__方法的类实例与另一个不同类型(同样没有实现__eq__和__ne__方法)的对象进行比较。 + +不应该做这样愚蠢的相等性检查 + + +### 错误代码 + foo = 1 == "1" # Noncompliant. Always False. + + foo = 1 != "1" # Noncompliant. Always True. + + class A: + pass + + myvar = A() == 1 # Noncompliant. Always False. + myvar = A() != 1 # Noncompliant. Always True. + +### 正确代码 + foo = 1 == int("1") + + foo = str(1) != "1" + + class Eq: + def __eq__(self, other): + return True + + myvar = Eq() == 1 + myvar = 1 == Eq() + myvar = Eq() != 1 # Ok. "__ne__" calls "__eq__" by default + myvar = 1 != Eq() + + # 2 错误和异常 ## 规则2.1 引发的异常类应该派生自BaseException类(python:S5632) -- Gitee