当前位置: 首页 > 知识库问答 >
问题:

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

杨凌
2023-03-14

我有一个轻微的问题,在找到一个正确的方法来访问另一个函数中的一个函数的变量。

我正在制作一种远程操作工具,所以我需要处理收到的命令[像退出或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.AF\u INET、socket.SOCK\u STREAM)

程序给出了一个错误nonetype没有属性数据...

帮我解决这个问题

共有1个答案

陆城
2023-03-14

您发布的代码相当粗糙,如果没有更多的上下文,就很难就如何继续向您提供好的建议。

您至少应该做的是将数据作为参数和返回值传递,而不是使用全局变量。这使得代码更易于阅读和测试。

即:

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

在这里使用类可能是一个好主意,也可能不是一个好主意,这取决于您试图完成的任务以及您的背景。

 类似资料:
  • 我有一个类Main(它具有公共静态void Main(String[]args))和另一个类MyDocument。 Main类中存在一个变量,我想从MyDocument类中的函数alphabetOccurrence()访问该变量。我该怎么做呢?我不想用它作为静态变量。任何修改只能在函数中进行,其余的代码应该保持不变。

  • 我在尝试访问在其他函数中声明的变量时遇到问题。 这是我的代码: 我试图退回var,但没有成功。

  • 问题内容: Python noob在这里。如何在“ fib”功能中掌握“内部”功能? 问题答案: 您不能,除非以某种方式返回,否则不能。 本质上是范围内的局部变量,您不能从外部访问函数的局部变量。(这甚至不会是有意义的,因为该功能正在运行时,除了不存在当地人想想看- 这将是有意义的访问的变量从功能之外吗?)

  • 我不明白为什么下面的代码会打印两次。我以为应该是个人和学生。当通过“a”对象调用printPerson()内部的getInfo()时,为什么要调用Person类内部的一个,为什么不调用Student类中的一个?提前谢谢。

  • 所以我在用摩卡酵素Sinon测试React app。我试图用if语句测试一个函数,其中有一个对另一个函数的调用。我的目标是输入if语句,但是存根第二个函数调用。代码如下: 所以我想输入if语句,但不调用getUsers()函数。我该怎么做?我正在监视SearchChange(),如下所示: 期待听到,谢谢!

  • 问题内容: 如果我有这个: 我之前已定义,因此效果很好。 我的问题是在第6行中调用。我试图用相同的定义在第一个函数之外进行定义,但是即使调用,它也始终相同。 我希望每次调用第一个函数然后再调用第二个函数时,都具有一个不同的。 我能做到这一点,而不界定外? 问题答案: 是的,您应该考虑在一个类中定义您的函数,并使word成为成员。这比较干净 创建类后,您必须将其实例化为对象并访问成员函数。 另一种方

  • 问题内容: 我可以在python3.2的全局范围内调用嵌套在另一个函数内的函数吗? 这是从外部func1()调用func2()的一种方法吗? 问题答案: 否,除非您返回该函数: 甚至

  • 我定义了一个名为marger的函数来查找两个参数(num1、num2)之间的较大数。现在,我想在另一个名为“最大”的函数中使用这个函数,这个函数获得一个数组并返回该数组的最大个数,但我被卡住了。有人能帮我吗?下面是我的代码: