Trong Python, để lại một dấu phẩy dấu như thế này, tất nhiên, không phải là một SyntaxError
:không chủ ý dấu phẩy mà tạo ra một tuple
In [1]: x = 1 ,
In [2]: x
Out[2]: (1,)
In [3]: type(x)
Out[3]: tuple
Nhưng, đồng thời, nếu các dấu phẩy dấu được đưa vô tình, có thể khó nắm bắt loại "sự cố" này, đặc biệt đối với người mới sử dụng Python.
Tôi đang nghĩ nếu chúng ta có thể bắt loại "sự cố" này sớm, tĩnh, với sự trợ giúp của PyCharm
tính năng kiểm soát chất lượng mã thông minh; mypy
, pylint
hoặc flake8
công cụ phân tích mã tĩnh.
Hoặc, một ý tưởng khác sẽ là hạn chế/đánh dấu tạo một mục tuples hoàn toàn không có dấu ngoặc đơn. Có thể không?
@onlynone btw, tôi không chắc chắn những gì bạn có nghĩa là bởi các câu hỏi/câu lệnh đầu tiên. Tôi có nên đặt thêm một "Có thể không?" cho phần đầu tiên của câu hỏi? Tôi nghĩ rằng nó khá rõ ràng những gì tôi có nghĩa là, nhưng hãy cho tôi biết nếu có bất cứ điều gì có thể được cải thiện để làm cho câu hỏi sạch hơn. Cảm ơn. – alecxe
Tôi đoán nó ổn. Nó chỉ là một cách kỳ quặc: "là nó có thể (để phát hiện vấn đề này với phân tích mã tĩnh)" là loại của một rõ ràng "có!" - đó chính xác là những gì các công cụ phân tích mã tĩnh làm. Và nó chỉ ra một trong những người phổ biến nhất cho python, và một trong những bạn đề cập đến chính mình, không chính xác những gì bạn muốn. Cách giải thích khác, "là nó có thể (để hạn chế việc tạo ra một mục tuples không có parens)", có vẻ là một "không" rõ ràng vì nó chỉ là cách python hoạt động. – onlynone
PEP8 là mơ hồ bất thường mô tả việc sử dụng dấu phẩy sau này là "OK, nhưng gây nhầm lẫn:" Tôi mong đợi hướng dẫn có thẩm quyền hơn https://www.python.org/dev/peps/pep-0008/#when-to-use- trailing-commas –