python - 创建元组的无意尾随逗号

标签 python pycharm pylint static-code-analysis flake8

在 Python 中,像这样在尾部留下逗号当然不是 SyntaxError:

In [1]: x = 1 ,

In [2]: x
Out[2]: (1,)

In [3]: type(x)
Out[3]: tuple

但是,与此同时,如果结尾的逗号不小心,可能很难捕捉到这种“问题”,尤其是对于 Python 新手。

我在想,我们是否可以PyCharm 智能代码质量控制功能的帮助下,静态地尽早发现这种“问题”mypypylintflake8 静态代码分析工具。

或者,另一种想法是限制/突出显示在没有括号的情况下隐式创建一个项目元组。可能吗?

最佳答案

pylint已经检测到这是一个问题 ( as of version 1.7 )。

例如,这是我的tuple.py:

"""Module docstring to satisfy pylint"""

def main():
    """The main function"""
    thing = 1,
    print(type(thing))

if __name__ == "__main__":
    main()
$ pylint tuple.py
No config file found, using default configuration
************* Module tuple
R:  5, 0: Disallow trailing comma tuple (trailing-comma-tuple)

------------------------------------------------------------------
Your code has been rated at 8.00/10 (previous run: 8.00/10, +0.00)

$ pylint --help-msg trailing-comma-tuple
No config file found, using default configuration
:trailing-comma-tuple (R1707): *Disallow trailing comma tuple*
  In Python, a tuple is actually created by the comma symbol, not by the
  parentheses. Unfortunately, one can actually create a tuple by misplacing a
  trailing comma, which can lead to potential weird bugs in your code. You
  should always use parentheses explicitly for creating a tuple. This message
  belongs to the refactoring checker. It can't be emitted when using Python <
  3.0.

关于python - 创建元组的无意尾随逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44700951/

相关文章:

python - 统计调查结果

python - IO错误: [Errno 13] Permission denied: '/usr/local/bin/django-admin.py'

python - 导入外部/主目录时,Python 中出现“无模块命名”错误

python - 为什么远程部署路径中的 $PATH 与远程系统中的 $PATH 不同?

python - pycharm pytestrunner PluginManager 意外的关键字参数

python - 使用 pylint 文档参数时减少 Python 文档字符串中的冗余

python - 如何使用 map 应用 n 次函数

pycharm - 在 Pycharm 中包装突出显示的文本

python - 在 python 的自定义错误类中调用 super 有什么意义?

python - 让 pylint 在 pylons/SA 模型中查找继承方法时遇到问题