python学习之返回函数
2020-12-13 16:57
标签:pen 结果 pytho 作用 end 返回 执行 style 显示 在学习返回函数的时候,函数只是在调用的时候才会运行一直不理解,隔天后在来看的时候明白了一些,记录一下。 看代码 看这个函数的定义是将func1()下定义的函数fun2()进行返回,当将func1(2)的地址赋给pow2后当运行pow2(9)的时候才运行了fun1()内定义并返回的函数即fun2(),所以fun2(9,2)。 还有就是返回函数中的在一个内部函数里对外部作用域(但不是全局作用域)的变量进行引用,内部函数称为闭包(closure)。其中用到了循环 结果全是9,而不是所希望的1,4,9 在这个函数中i是count函数的局部变量 当i= 1时,i指向了1,结果返回了函数的地址放在了fs的第一个位置。 当i = 2时,又将i 指向了2,函数地址返回到了fs的第二个位置上。 当i = 3 时,i 指向了3,然后返回了函数地址在fs的第三个位置。 所以当调用函数显示的时候,i 已经是3,所以得到的结果是一样的。 这样修改后就得到了希望的结果。 代码中f(j)将循环中i的值传给了j,当i处于循环中时返回的函数并不是指向i,而是将它的数值传给了j并指向j。 python学习之返回函数 标签:pen 结果 pytho 作用 end 返回 执行 style 显示 原文地址:https://www.cnblogs.com/miaorn/p/11622355.html>>> def fun1(n):
... def fun2(x):
... return pow(x,n)
... return fun2
...
>>> pow2=fun1(2)
>>> pow2
def count():
fs=[]
for i in range(1,4):
def f():
return i*i
#把函数f地址追加至列表fs
fs.append(f)
#返回为一个包含3个函数f地址的列表
return fs
print(‘count函数返回一个列表,列表分别为函数f地址‘,count())
f1,f2,f3 = count()
print(f1,‘f1执行结果是‘,f1())
print(f2,‘f2执行结果是‘,f2())
print(f3,‘f3执行结果是‘,f3())
count函数返回一个列表,列表分别为函数f地址 [
def count():
fs=[]
for i in range(1,4):
def f(j):
def g():
return j*j
return g
fs.append(f(i))
#返回为一个包含3个函数f地址的列表
return fs
print(‘count函数返回一个列表,列表分别为函数f地址‘,count())
f1,f2,f3 = count()
print(f1,‘f1执行结果是‘,f1())
print(f2,‘f2执行结果是‘,f2())
print(f3,‘f3执行结果是‘,f3())
count函数返回一个列表,列表分别为函数f地址 [