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 2d8bc78bf1d9d6dd88ecbd1fc6051ac540f80e00..7e4e7524abf96916d6f4614a21a86b226cfa70f7 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" @@ -2,7 +2,7 @@ # 前言 -# 1 基本语法 +# 1 基本语法与表达式 ## 规则1.1 变量、类、函数应该先定义再使用(python:S3827) 变量、类、函数应该先定义再使用,否则会导致程序报错。 @@ -56,6 +56,24 @@ name = other_name target = -num # Compliant; intent to assign inverse value of num is clear target += num +## 规则1.4 在一个函数中不应该同时使用return和yield(python:S2712) +使用yield的函数被称为生成器,在Python 3.3之前,生成器不能返回值。同样的,使用return的函数也不能使用yield,这样做将导致SyntaxError。因此要么将Python版本升级到>=3.3版本,要么不要在函数中同时使用return和yield。 +### 错误代码 + def adder(n): + num = 0 + while num < n: + yield num + num += 1 + return num #Noncompliant + +### 正确代码 + def adder(n): + num = 0 + while num < n: + yield num + num += 1 +### 参考资料 +[python手册-yield表达式](https://docs.python.org/zh-cn/3/reference/expressions.html#yieldexpr) # 2 错误和异常 ## 规则2.1 异常应该从Exception类派生(python:S5632) @@ -173,7 +191,7 @@ name = other_name except Exception: logging.exception("Failed") # Ignore all "Exception" subclasses yet allow SystemExit and other important exceptions to pass -# 3 函数参数与返回值 +# 3 参数与返回值 ## 规则3.1 __init__函数不应该有显示返回值(python:S2734) 在python中,__init__函数是一个特殊的方法,用于在创建类的实例时进行初始化操作。它没有显示的返回值,而是隐式的返回新创建的实例对象。 @@ -375,4 +393,5 @@ break和continue是非结构化的控制流语句,在循环体外使用会使 ### 正确代码 if narg == 1: print('@Usage: input_filename nelements nintervals') - sys.exit() \ No newline at end of file + sys.exit() +