Unintentional trailing comma that creates a tuple

前端 未结 1 2046
礼貌的吻别
礼貌的吻别 2020-11-29 11:57

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]:         


        
相关标签:
1条回答
  • 2020-11-29 13:03

    pylintalready detects this as a problem (as of version 1.7).

    For example, here's my 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.
    
    0 讨论(0)
提交回复
热议问题