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 8dc8bab2a0ccb62965199de47d92ec192e4ed37b..4b706d92451d32952ebf3c05f444ac59ab0d3369 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)