【问题标题】:How to pass a local variable to the next function with a return statement in Python如何在 Python 中使用 return 语句将局部变量传递给下一个函数
【发布时间】:2016-04-22 16:07:06
【问题描述】:

我是 Python 新手,在尝试将变量传递给后续函数(在最基本的层面上)时,我感到很沮丧。我已经研究过这个网站和其他网站,但没有得到一个合适的明确答案。我不想使用全局变量。我已经根据 IDLE 的错误报告对函数尝试了各种位置参数,但我只是不明白为什么在下面的代码中,前两个函数按预期工作,但第三个函数遵循完全相同的结构,失败。这是代码:

#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 作为参数添加到#mainfunc2func3 调用中,正如IDLE 错误所暗示的那样,以及尝试使其工作的其他事物组合,但是没运气。有人可以向我解释为什么以及这里出了什么问题吗?

【问题讨论】:

  • 这个问题不属于 SO。即使其他一些新手有类似的问题,他们也永远无法找到这个讨论。尝试例如寻找当地的 Python 聚会来帮助您学习。

标签: python function return local-variables


【解决方案1】:

func2 需要一个参数。试试

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

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

顺便说一句,如果您正在撰写有关错误消息的文章,请发布您的堆栈跟踪。这将使检查您的问题变得容易得多。

【讨论】:

  • OUTPUT:abc 是初始值。现在在 FUNC2 中。价值通过了吗? abc 是传递的值。 abcd 是新值。回溯(最后一次调用):文件“C:\Users....pass_vals_prog.py”,第 25 行,在 func3(func2()) 类型错误:func2() 缺少 1 个必需的位置参数:'value_to_pass'
  • #main func2(func1()) func3(func2(func1()))
【解决方案2】:

在代码func2(func1()) 中,您使用来自func1return 作为func2 定义中所需的变量。通过您的示例,func1 将始终满足将变量传递给 func2func3 的要求

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

在第二个示例中,func2 的返回值满足了func3 变量要求,但func2 没有获得传递的变量,因此它失败了。如前所述,您需要在代码的func2() 部分中添加一些内容。

【讨论】:

    【解决方案3】:

    @吉姆: 感谢这工作:

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

    abc 是初始值。

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

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

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

    按 ENTER 键退出。

    【讨论】:

      猜你喜欢
      • 2013-10-12
      • 2014-01-12
      • 2011-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-31
      相关资源
      最近更新 更多