第五季 发表于 2020-6-26 16:10:40

可以解释下 这两段区别是啥吗

def funOut():

    def funIn():

      print('宾果!你成功访问到我啦!')

    return funIn()

def funOut():

    def funIn():

      print('宾果!你成功访问到我啦!')

    return funIn

heidern0612 发表于 2020-6-26 16:17:13

第一个函数返回的结果就只是打印这一句话,而第二个函数返回的是内部函数的内存地址。

也就是说,第一个函数返回的,你没办法再加工了;而第二个函数返回的东西你还可以再加工。

Twilight6 发表于 2020-6-26 16:17:39



函数带上 括号是调用这个函数,返回这个函数的执行结果,而函数不带括号就是指这整个函数体

就对你这而言吧,第一个代码:

def funOut():

    def funIn():

      print('宾果!你成功访问到我啦!')

    return funIn()
带上了括号,当你调用 funOut() 函数时候,返回的是 funIn() 函数运行的结果,也就等于你先调用了 funOut() 函数,然后再调用了 funIn() 函数

而 funIn() 函数里没有设置 return 返回值 那么 Python 默认返回了 None,则调用最后返回结果是 None

而第二个代码:
def funOut():

    def funIn():

      print('宾果!你成功访问到我啦!')

    return funIn
没带上括号,那么返回的就是 funIn 这整个函数体,当你调用 funOut() 函数时候,返回的结果是funIn 这整个函数体

也就是可以看成 你如果 x = funOut() 调用 这个函数 因为函数返回的还是一个函数,那么x就等于返回的那个函数 即: x = funIn

这个时候你可以继续调用 x 函数,实际上就是在调用 funIn 函数

第五季 发表于 2020-6-26 16:52:54

Twilight6 发表于 2020-6-26 16:17
函数带上 括号是调用这个函数,返回这个函数的执行结果,而函数不带括号就是指这整个函数体

就对你 ...

我明白了 哥哥你真棒
页: [1]
查看完整版本: 可以解释下 这两段区别是啥吗