Python 以下代码的pylint合规性

Python 以下代码的pylint合规性,python,pylint,Python,Pylint,我从wesley chun那里得到了以下代码 我对原始代码做了一些修改,但是我仍然不知道如何最好地修改它以使其更符合要求 这是我收到的所有信息 C: 14,0: Invalid name "tcp_server_socket" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$) C: 21,4: Invalid name "tcpCliSock" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$) C: 21,16:

我从wesley chun那里得到了以下代码

我对原始代码做了一些修改,但是我仍然不知道如何最好地修改它以使其更符合要求

这是我收到的所有信息

C: 14,0: Invalid name "tcp_server_socket" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C: 21,4: Invalid name "tcpCliSock" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C: 21,16: Invalid name "addr" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
E: 25,15: Instance of '_socketobject' has no 'recv' member
E: 28,8: Instance of '_socketobject' has no 'send' member

我想前三个只是想让我使用所有caps变量名,这是这些类型脚本的标准实践,我不认为使用这种约定会使代码变得更可读,相反,它看起来更不可读,pylint中这种规则背后的动机是什么,以及如何使代码更兼容,我不认为像这样的作家会无缘无故地写这样的代码,无论是可读性、初学者友好性还是其他方面。

您看到的关于
\u socketobject
的两个错误是
socket
模块工作原理的一个怪癖。这个问题已经解决了,链接的问题提供了几个答案来帮助您消除这些错误

您收到的前三条消息是约定警告。他们抱怨名称
tcp\u server\u socket
tcpCliSock
addr
与常量成员的正则表达式不匹配。因为您的代码处于“顶级”(即任何函数或类之外),所以成员应该是常量,常量的名称应该与给定的正则表达式匹配

假设您的Python脚本保存在文件
tcp\u server.py
中。如果然后从Python解释器或其他Python脚本编写
import tcp_server
,tcp服务器将启动。这通常不是您希望发生的事情。如果导入模块,它可以定义函数、类和常量,但不应该运行任何代码

我建议将所有代码从
tcp\u server\u socket=socket(..)
行向下移动到一个单独的函数中(我们称之为
start\u server
),然后在脚本底部添加以下行:

if __name__ == "__main__":
    start_server()
如果直接运行脚本,这两行将启动服务器,但如果从其他地方导入tcp_服务器,则不会启动服务器


完成此操作后,有关变量名的警告将消失,但您将得到一些进一步的约定警告。其中两个会抱怨
数据
tcpCliSock
与变量名的命名约定不匹配,另一个会唠叨您的
启动\u服务器
函数没有docstring。

您看到的关于
\u socketobject
的两个错误是
套接字
模块工作方式的一个奇怪之处。这个问题已经解决了,链接的问题提供了几个答案来帮助您消除这些错误

您收到的前三条消息是约定警告。他们抱怨名称
tcp\u server\u socket
tcpCliSock
addr
与常量成员的正则表达式不匹配。因为您的代码处于“顶级”(即任何函数或类之外),所以成员应该是常量,常量的名称应该与给定的正则表达式匹配

假设您的Python脚本保存在文件
tcp\u server.py
中。如果然后从Python解释器或其他Python脚本编写
import tcp_server
,tcp服务器将启动。这通常不是您希望发生的事情。如果导入模块,它可以定义函数、类和常量,但不应该运行任何代码

我建议将所有代码从
tcp\u server\u socket=socket(..)
行向下移动到一个单独的函数中(我们称之为
start\u server
),然后在脚本底部添加以下行:

if __name__ == "__main__":
    start_server()
如果直接运行脚本,这两行将启动服务器,但如果从其他地方导入tcp_服务器,则不会启动服务器


完成此操作后,有关变量名的警告将消失,但您将得到一些进一步的约定警告。其中两个会抱怨
数据
tcpCliSock
与变量名的命名约定不匹配,另一个会唠叨你的
start\u server
函数没有docstring。

我想这从来都不是一个模块,只是一个独立脚本,这样就好了。我想这从来都不是一个模块,只是一个独立脚本,这样就好了。