我在查找另一个函数中访问函数变量的正确方法时遇到了一些问题。
我正在制作远程操作类工具,因此我需要处理收到的命令[如'exit'或'nircmdc.exe'或'telnet'等]。
以下代码并不完整,但它是核心:
def regular():
global data
data=c.recv(1024)
data=data.decode()
cmd=subprocess.Popen(data,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
output,err=cmd.communicate()
c.sendall(output+err)
def data_process():
data=regular().data
quit='exit'
nircmd='nircmdc'
if quit in data:
do_something()
elif nircmd in data:
do_else()
这里c是客户端连接到套接字“s”和s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
程序给出错误nonetype没有属性数据......
帮我解决这个问题
答案 0 :(得分:0)
你发布的代码相当粗糙,没有更多的背景,很难给你一个很好的建议如何继续。
您至少应该做的是将数据作为参数传递并返回值而不是使用全局变量。这使代码更易于阅读和测试。
那是:
def regular(c):
data = c.rev()
... # Code that you already have
return data
def data_process(c):
data = regular(c)
... # Code that you already have
在这里使用课程可能有也可能不是一个好主意,这取决于你想要完成什么以及你的背景是什么。