在另一个函数中访问函数的变量,如function()。var in python

时间:2013-07-23 04:45:45

标签: sockets python-3.x

我在查找另一个函数中访问函数变量的正确方法时遇到了一些问题。

我正在制作远程操作类工具,因此我需要处理收到的命令[如'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没有属性数据......

帮我解决这个问题

1 个答案:

答案 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

在这里使用课程可能有也可能不是一个好主意,这取决于你想要完成什么以及你的背景是什么。