【发布时间】:2017-05-08 04:52:32
【问题描述】:
已编辑! 我想在外部函数之外引用内部函数返回值,实际上是在另一个函数内部。
例子:
def m1():
def m2():
x= 'A'
y= 'B'
pre_solution = x+y
return pre_solution
pre_solution = m2()
m1_solution = pre_solution*2
return m1_solution
print(m1())
现在我想创建一个新函数,我需要 m2() 的返回值在其中:
def m3():
pre_solution = m2()
m3_solution = pre_solution*3
return m3_solution
print(m3())
我收到一个错误,指出 m2 未定义。我需要在不使用复制和粘贴的情况下获取 pre_solution 值(因为实际代码中有更多行)。这是我目前的工作,但我想看看是否有更简单的方法。
def m3():
x= 'A'
y= 'B'
pre_solution = x+y
m3_solution = pre_solution*3
return m3_solution
print(m3())
我正在为使用自动评分器的作业执行此操作,并且仅评估函数内部的代码,而不是全局范围,m1() 和 m3() 将被评估,但如果我将 m2() 放入全局范围不会的。希望这是有道理的。这是我在这里的第一个问题。
谢谢
【问题讨论】:
-
如果你把
m2()函数放在m1()之外,m3()会识别它。你真的需要嵌套m2()吗? -
不可能在“没有任何全局变量的情况下”编写代码,因为您的函数是全局定义的,我看不出在全局范围内定义一个额外的函数是如何产生的它对您的作业无效。
-
@TadhgMcDonald-Jensen 这可能是对不了解函数是值且函数名是变量的人的限制。它们的意思是“没有全局整数、字符串等”
-
基本上我试图避免复制和粘贴来重新创建我在 m2() 中执行的所有步骤以获取我需要在另一个函数中使用的返回值。我真的不需要 m1() 中的嵌套函数,但希望将 m2() 返回值用于以后的函数并且不知道如何引用它。我目前的工作只是复制和粘贴。我将它用于使用自动评分器并且无法识别全局范围内的任何内容的作业(它正在评估函数)。
标签: python scope nested-function