def out():
var1 = "abc"
print(var1)
def inner():
var2 = "def"
我只想打电话给#34; Inner" function ...最终输出应该只打印var2而不是var1 ...
提前谢谢
答案 0 :(得分:1)
如果您不想运行该功能的某些部分' out'你可以使用参数。
def out(choice=True):
if choice :
var1 = "abc"
print(var1)
else :
def inner():
var2 = "def"
print(var2)
inner()
答案 1 :(得分:0)
您将无法从inner
函数外部调用out
,因为inner
仅在out
内定义,除非您创建对{{1}的引用来自inner
函数之外的}。此外,out
没有输出任何内容,因为它没有打印语句。
要解决此问题,您有两种选择:
inner
置于更广泛的范围内(即inner
之外)并添加out
声明。print(var1)
函数位于inner
内,则只需out
作为closure从inner
返回在out
内也有print语句;或者只是从inner
内部调用它。这有副作用,即执行out
内的任何语句,直到返回闭包。答案 2 :(得分:0)
您尝试的方法称为嵌套函数:
您可以通过此答案获取有关nested function in Python的信息。
有关closure
的其他一些信息另一种方法是,
def fun1():
x = 11
def fun2(a=a):
print x
fun2()
fun1()
<强>输出:强>
prints 11
示例2:
def f1(x):
def add(y):
return x + y
return add
res = f1(5)
print(res(10)) # prints 15