Discuss / Python / 有没有括号差别好大

有没有括号差别好大

Topic source

在例子这里,如果把fs.append(f)改成fs.append(f())就可以正常输出149了

def count():
    fs = []
    for i in range(1, 4):
        def f():
             return i*i
        fs.append(f)
    return fs

f1, f2, f3 = count()

#2 Created at ... [Delete] [Delete and Lock User]

确实捏,但是直接改成fs.append(f())的话输出的就是f()执行后的数了,原本是要输出函数的呀,我是这样认为的

刘明阳

#3 Created at ... [Delete] [Delete and Lock User]

改成这样也可以

def f(i = i):     return i*ifs.append(f)

f相当于一个指向函数的变量,f()才代表调用这个函数

If you like

#5 Created at ... [Delete] [Delete and Lock User]

上面不是说吗, fs.append(f):fs添加的时f函数,会等到 f3调用时,f1,f2一起使用f3的i值,如果是fs.append(f()), fs添加的是f(),会立即用i值算出值,不用等到f3

f1, f2, f3 = count()

  • 1

Reply