简体   繁体   English

我无法理解这个封闭功能

[英]i cannot understand this enclosing function

why kubik() can be called?为什么可以调用 kubik() ?

def funtionsaufsummerier_fabrik(x):
    def funktionaufsummerier(n):
        return sum([x(i) for i in range (1, n+1)])
    return funktionaufsummerier

i cannot understand the function above.我无法理解上面的功能。 x = kubik or x= kubik()? x = kubik 或 x = kubik()? and when i run this code on python tutor, def funktionaufsummerier(n): is run first.当我在 python tutor 上运行此代码时,首先运行def funktionaufsummerier(n): But i think, funtionsaufsummerier_fabrik(x) will jump straight to return and then return def funktionaufsummerier(n):但我认为, funtionsaufsummerier_fabrik(x)会直接跳转到return ,然后返回def funktionaufsummerier(n):

def kubik(i):
    return i*i*i

def quadrat(i):
    return i*i


kubiksumme = funtionsaufsummerier_fabrik(kubik)
quadratsumme = funtionsaufsummerier_fabrik(quadrat)

print(kubiksumme(4))

funtionsaufsummerier_fabrik is a function that builds another function, returning that construction. funtionsaufsummerier_fabrik是一个构建另一个函数并返回该构造的函数。 Yes, x is a function reference.是的, x是函数引用。 The inner function will call x on each value in the indicated range, returning the sum of those powers.内部函数将对指定范围内的每个值调用x ,返回这些幂的总和。

kubiksumme is a constructed function to sum cubes; kubiksumme是一个对立方体求和的构造函数; quadratsumme is a constructed function to sum squares. quadratsumme是一个用于计算平方和的构造函数。 When you call kubiksumme(4) , the effect will be当您调用kubiksumme(4)时,效果将是

    return sum([kubik(i) for i in range (1, 4+1)])

Does that clear up the functions for you?这是否为您清除了功能?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM