如何通过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
将作为参数传递给#main
下func3
通话func2
,作为IDLE错误提示,以及对事物的其他组合,试图得到它的工作,但没有运气。有人可以向我解释为什么和这里出了什么问题?
func2需要一个参数。尝试
#main
func2(func1())
func3(func2(func1()))
或
#main
func2(func1())
func3(func2('e'))
顺便说一句,如果你正在写有关错误信息,请发表您的堆栈跟踪。这会让你更容易检查你的问题。
输出:abc是初始值。 现在在FUNC2中。价值传递了吗? abc是传递的值。 abcd是新的价值。 回溯(最近一次通话最后): 文件“C:\ Users .... pass_vals_prog.py”,第25行,在
#main func2(func1()) func3(func2(func1())) –
谢谢,那成功了: –
在代码func2(func1())
中,您使用func1
的return
作为func2
定义中所需的变量。随着你的例子,func1
总是满足传递变量的要求func2
或func3
记住,func2
和func3
必须始终有内部的()个变量。该变量可以是是调用另一个函数(如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键退出。
此问题不属于SO。即使其他一些新手也有类似的问题,他们永远无法找到这个讨论。尝试找到一个本地的python聚会来帮助你学习。 – osa