如何通过Python中的return语句将本地变量传递给下一个函数

问题描述:

我是Python的新手,并且试图将变量传递给后续函数(最基本的级别)时感到沮丧。我研究过这个网站和其他网站,但没有得到一个合适的明确答案。我不想使用全局变量。我已经尝试了所有基于IDLE的错误报告的函数的位置参数,但我不明白为什么在下面的代码中,前两个函数按需要工作,但第三个函数遵循完全相同的结构,失败。下面的代码:如何通过Python中的return语句将本地变量传递给下一个函数

#passing values between functs. 

def func1(): 
    initial_value = 'abc' 
    print(initial_value, "is the initial value.") 
    value_to_pass = initial_value 
    return value_to_pass 

def func2(value_to_pass): 
    print("\nIn FUNC2 now. Did the value pass?") 
    print(value_to_pass, "is the passed value.") 
    new_value1 = value_to_pass + 'd' 
    print(new_value1, "is the new value.") 
    return new_value1 

def func3(new_value1): 
    print("\nIn FUNC3 now. Did the value pass?") 
    print(new_value1, "is the passed value.") 
    new_value2 = new_value1 + 'e' 
    print(new_value2, "is the new value.") 


#main 
func2(func1()) 
func3(func2()) 


input("\nPress the ENTER key to EXIT.") 

我试着在value_to_pass将作为参数传递给#mainfunc3通话func2,作为IDLE错误提示,以及对事物的其他组合,试图得到它的工作,但没有运气。有人可以向我解释为什么和这里出了什么问题?

+0

此问题不属于SO。即使其他一些新手也有类似的问题,他们永远无法找到这个讨论。尝试找到一个本地的python聚会来帮助你学习。 – osa

func2需要一个参数。尝试

#main 
func2(func1()) 
func3(func2(func1())) 

#main 
func2(func1()) 
func3(func2('e')) 

顺便说一句,如果你正在写有关错误信息,请发表您的堆栈跟踪。这会让你更容易检查你的问题。

+0

输出:abc是初始值。 现在在FUNC2中。价值传递了吗? abc是传递的值。 abcd是新的价值。 回溯(最近一次通话最后): 文件“C:\ Users .... pass_vals_prog.py”,第25行,在 func3(func2()) TypeError:func2()缺少1必需的位置参数:' value_to_pass' –

+0

#main func2(func1()) func3(func2(func1())) –

+0

谢谢,那成功了: –

在代码func2(func1())中,您使用func1return作为func2定义中所需的变量。随着你的例子,func1总是满足传递变量的要求func2func3

记住,func2func3必须始终有内部的()个变量。该变量可以是是调用另一个函数(如func2(func1()))的返回值,但它不能为空,就像在第二个示例func3(func2())中一样。

在第二个示例中,func3变量要求由返回值func2满足,但func2未获得传递的变量,因此失败。如前所述,您需要在代码的func2()部分放置一些东西。

@jim: 感谢这个工作:

#main 
func2(func1()) 
func3(func2(func1())) 

ABC是初值。

现在在FUNC2中。价值传递了吗? abc是传递的值。 abcd是新的价值。 abc是初始值。

现在在FUNC2中。价值传递了吗? abc是传递的值。 abcd是新的价值。

现在在FUNC3中。价值传递了吗? abcd是传递的值。 abcde是新的价值。

按下ENTER键退出。