Unintentional trailing comma that creates a tuple(创建元组的无意尾随逗号)
问题描述
在 Python 中,这样的尾随逗号当然不是 SyntaxError:
In Python, leaving a trailing comma like this is, of course, not a SyntaxError:
In [1]: x = 1 ,
In [2]: x
Out[2]: (1,)
In [3]: type(x)
Out[3]: tuple
但是,与此同时,如果尾随逗号不小心放了,可能很难捕捉到这种问题",尤其是对于 Python 新手而言.
But, at the same time, if the trailing comma was put accidentally, it may be difficult to catch this kind of a "problem", especially for Python newcomers.
我在想我们能否提前发现这种问题",借助 PyCharm 智能代码质量控制功能;mypy、pylint 或 flake8 静态代码分析工具.
I am thinking if we can catch this kind of a "problem" early, statically, with the help of PyCharm smart code quality control features; mypy, pylint or flake8 static code analysis tools.
或者,另一个想法是限制/突出显示不带括号的隐式创建一个项目元组.可能吗?
Or, another idea would be to restrict/highlight creating one item tuples implicitly without parenthesis. Is it possible?
推荐答案
pylint已经检测到这是一个问题(从 1.7 版开始).
pylintalready detects this as a problem (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 多循环失败 2022-01-01
- 将 x 轴刻度更改为自定义字符串 2022-01-01
- 与常规 dict 相比,Python manager.dict() 非常慢 2022-01-01
- 用 Python 编写 Fortran 无格式文件 2022-01-01
- Discord.py 缺少必需的参数 2022-01-01
- pyserial - 可以从线程 a 写入串行端口,是否阻塞从线程 b 读取? 2022-01-01
- 尝试制作WhatsApp机器人 2022-01-01
- 在 Celery 工作人员中捕获 Heroku SIGTERM 以优雅地关 2022-01-01
- 由Python将MP3转换为MIDI(类型错误:无法加载插件:mtg-Melodia:Melodia) 2022-01-01
- numpy float:比算术运算中内置的慢 10 倍? 2022-01-01
