将数据中间函数传递回函数Python

时间:2016-08-12 15:49:34

标签: python

下面的脚本运行正常,直到我添加“def test”,我试图摆脱一般的编程中的所有全局变量,因为我不是一个优秀的程序员,我希望有办法做这个。

我想将“foo”从函数“test”传递回函数“work”,但这不起作用,因为它不是全局变量。有什么想法吗?

bar = "bar"
barnone = "barnone"

def function_A():
    data = 5
    data1 = 15
    if host == 1:
        work(data, data1)
    else:
        function_B()

def function_B():
    data = 3
    data1 = 13
    work(data, data1)
    test(data)
    print foo

def work(data,data1):
    print data
    print data1
    test(data)
    print foo

def test(data):
    if data == 3:foo = bar
    elif data == 5:foo = barnone

if __name__ == '__main__':
    host = 11
    function_A()

修改

谢谢,这个有效...我很感谢所有的反馈,因为我是一个新手,请记住这只是一个测试脚本,我把它们放在一起,以了解传递参数到不同的功能。在此之前我使用全局变量而我正试图摆脱它们。

谢谢,任何建议都有帮助。

bar = "bar"
barnone = "barnone"

def function_A():
    data = 5
    data1 = 15
    if host == 1:
        work(data, data1)
    else:
        function_B()

def function_B():
    data = 3
    data1 = 13
    work(data, data1)
    test(data)

def work(data,data1):
    print data
    print data1
    test(data)
    print test(data)

def test(data):
    if data == 3:foo = bar
    elif data == 5:foo = barnone
    return foo

if __name__ == '__main__':
    host = 11
    function_A()

3 个答案:

答案 0 :(得分:4)

将以下内容添加到test()功能的末尾:

`return foo`

然后你就可以像这样在work()打印变量

print test(data)

答案 1 :(得分:2)

foo仅在函数test()的“范围”中定义,因为这是您创建它的地方。函数work()不知道变量foo,因为它是函数test()之外的 undefined 。因此,test()必须将变量foo 返回调用 test()的地方,即行test(data)work()中。

所以,是的,将return foo添加到test()的末尾。

修改

当你说test(data)时,基本上是在说sum([1,2,3])。你已经调用了一个函数,但是你没有对结果做任何事情,你不是分配它。你必须说new_variable = test(data)。这意味着,从work()的角度来看:“调用函数test()并让它做它的事情。我不关心test()内部发生了什么,但我期待当它完成时我会向我吐出一些东西。我会把这些东西分配给我的范围内的一个变量,以便我以后可以使用它。“

就像说x = sum([1,2,3])一样。 sum是一个函数,它在其中执行某些操作,您并不真正关心什么,您只知道它应该返回一个合理的值,您将分配给x以后再用

Edit2:此外,由于您使用test()运算符,boolean将为foo返回==。而不是赋值运算符=

答案 2 :(得分:1)

您的test函数应该写成

def test(data):
    if data == 3:
        return 'bar'
    elif data == 5:
        return 'barnone'

在调用test的函数中,分配结果

something = test(data)

请注意,您的代码存在一些无关的问题,例如,如果data既不是3也不是5,会发生什么?