在函数外部使用 ‘return’ 或 ‘yield’¶
ID: py/return-or-yield-outside-function
Kind: problem
Security severity:
Severity: error
Precision: medium
Tags:
- reliability
- correctness
Query suites:
- python-security-and-quality.qls
在 Python 中,return
和 yield
语句以及 yield from
表达式只能在函数中使用。在函数或类方法之外使用它们会导致在运行时出现 SyntaxError
。
建议¶
在函数或类方法之外使用这些元素通常表示逻辑错误。因此,无法提出通用的修复建议。
示例¶
在这个例子中,return
语句在类中的类方法之外使用,而 yield
语句在模块作用域中在函数之外使用,这会导致在运行这段代码时出现 SyntaxError
。在这个例子中,可以通过将 return
语句放在类方法中,或将类重构为函数来修正无效的类。无效的 yield
语句可以成为包含 for
循环的新生成器函数的一部分。
# invalid class with return outside a function
class InvalidClass1(object):
if [1, 2, 3]:
return "Exists"
# invalid statement with yield outside a function
for i in [1, 2, 3]:
yield i
参考资料¶
Python 参考: return 语句.
Python 参考: yield 语句.
Python PEP-380: yield from 表达式.