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 91d6fc10a6b3a33c0d8da647ebf931098543279b..cfd73138f9526b5dd5e9f7ccc1de18b6e847c851 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" @@ -122,6 +122,36 @@ yield和return语句只有在函数的上下文中才有意义。在函数外使 if len(myList) == 0: pass +## 规则1.8 不应该在二元运算符的两侧使用相同的表达式(python:S1764) +在二元运算符的两侧使用相同的值几乎总是一个错误。在逻辑运算符的情况下,这要么是一个复制粘贴错误,要么就是无效代码而应该被简化。在位运算符和大多数二元数学运算符的情况下,两侧使用相同的值会产生可预测的结果,应该简化代码。此规则将在a==a和a!=a上引发问题。 +### 错误代码 + if a == a: # Noncompliant + work() + + if a != a: # Noncompliant + work() + + if a == b and a == b: # Noncompliant + work() + + if a == b or a == b: # Noncompliant + work() + + j = 5 / 5 # Noncompliant + k = 5 - 5 # Noncompliant +### 例外代码 +本规则允许忽略下面的表达式: + + 1 << 1 + +## 规则1.9 标识运算符不应该用在不同的类型之间(python:S3403) +标识运算符is和is not检查它们两侧的操作物是否指向同一实例。因此当它们用于比较不同类型的对象时也会分别返回True和False。但是这样的比较只能是一个bug。 +### 错误代码 + myint = 1 + mystring = "1" + value = myint is mystring # Noncompliant. Always False + value = myint is not mystring # Noncompliant. Always True + # 2 错误和异常 ## 规则2.1 引发的异常类应该派生自BaseException类(python:S5632) @@ -603,27 +633,6 @@ break和continue是非结构化的控制流语句,在循环体外使用会使 print('@Usage: input_filename nelements nintervals') sys.exit() -## 规则4.6 不应该在二进制运算符的两侧使用相同的表达式 -在二元运算符的两侧使用相同的值几乎总是一个错误。在逻辑运算符的情况下,这要么是一个复制粘贴错误,要么就是无效代码而应该被简化。在位运算符和大多数二元数学运算符的情况下,两侧使用相同的值会产生可预测的结果,应该简化代码。此规则将在a==a和a!=a上引发问题。 -### 错误代码 - if a == a: # Noncompliant - work() - - if a != a: # Noncompliant - work() - - if a == b and a == b: # Noncompliant - work() - - if a == b or a == b: # Noncompliant - work() - - j = 5 / 5 # Noncompliant - k = 5 - 5 # Noncompliant -### 例外代码 -本规则允许忽略下面的表达式: - - 1 << 1 # 5 单元测试 ## 规则5.1 单元测试的失败项应该被修复(common-py:FailedUnitTests)