当前位置: 首页 > 面试题库 >

产生元组的无意尾随逗号

钦高峯
2023-03-14
问题内容

在Python中,这样的结尾逗号当然不是SyntaxError

In [1]: x = 1 ,

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

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

但是,与此同时,如果 意外地用 了逗号结尾,可能很难抓住这种“问题”,尤其是对于Python新手。

我在想,是否可以借助智能代码质量控制功能 尽早地 静态地
解决这种“问题”PyCharmmypypylintflake8静态代码分析工具。

或者,另一个想法是 限制/突出显示隐式创建一个元组而没有括号 。可能吗?


问题答案:

pylint已经将其检测为问题(从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.


 类似资料:
  • 例如,我希望使用函数将转换为: 空格的解决方案是,所以我希望比较这方面的解决方案也能帮助解释一些正则表达式的基本原理。

  • 随机数有着广泛的用途。比如测试、游戏、仿真以及安全等领域都需要用到随机数。标准库所提供的多种可供选择的随机数产生器也恰恰反应了随机数应用范 围的多样性。随机数产生器由引擎(engine)和分布(distribution)两部分组成。其中,engine用于产生一个随机数序列或者伪随机数 序列;distribution则将这些数值映射到位于固定范围的某一数学分布中。关于分布的例子有:unifrom_i

  • 在我的应用程序中,我希望使用此库来显示项。 服务器中的ArrayList: 我为显示项编写了以下代码:

  • 问题内容: 手动生成JSON对象或数组时,通常在对象或数组的最后一项上留下逗号逗号会更容易。例如,从字符串数组输出的代码可能看起来像(在C ++中的伪代码中): 给你一个像 可以吗? 问题答案: 不幸的是,JSON规范不允许以逗号结尾。有几种浏览器可以使用它,但是通常您需要担心所有浏览器。 通常,我会尝试解决问题,并在实际值前添加逗号,因此最终得到的代码如下所示: for循环中多余的一行代码几乎不

  • 本文向大家介绍C#产生随机双,包括了C#产生随机双的使用技巧和注意事项,需要的朋友参考一下 示例 生成介于0和1.0之间的随机数。(不包括1.0)            

  • 问题内容: 不能重复,因为我在问pandas。 我有一些带有数字的列。我跑 那成功地截断了长的小数点,而不是正确地写了:,但是我仍然得到 或带有尾随零。 跑完大熊猫后,如何摆脱所有列中的尾随零 ? 我想将数据帧另存为csv,并且需要数据来显示我希望的方式。 问题答案: df = df.round(decimals=6).astype(object) 转换为将允许混合表示。但是,请记住,从性能角度来