月魔同学 发表于 2020-8-1 16:09:07

20课后作业

def funOut():
    def funIn():
      print('宾果!你成功访问到我啦!')
    return funIn
funOut()()
宾果!你成功访问到我啦!
这个程序 return funIn返回值是什么?是一个变量funIn吗?还是其他什么?
funOut()()这个意思就是访问funIn()吗?如果是funIn():里面再嵌套一个funin()函数是否可以通过funOut()()()来访问?
还有一个函数里可以嵌套多个函数吗?若可以应该怎样访问funin()?
def funOut():
    def funIn():
      print('宾果!你成功访问到我啦!')
    def funin():
      print('宾果2!你成功访问到我啦!')
    return funIn()+funin()

若是这样呢?
def funOut():
    def funIn():
      print('宾果!你成功访问到我啦!')
    def funin():
      print('宾果2!你成功访问到我啦!')
    return funIn+funin







Twilight6 发表于 2020-8-1 16:09:08



这个程序 return funIn返回值是什么?是一个变量funIn吗?还是其他什么?

返回的就是一个函数,因为 funIn 没有带上括号,如果带上括号了返回的就是 funIn 函数的调用结果

funOut()()这个意思就是访问funIn()吗?

funOut()() 相当于 funIn()

如果是funIn():里面再嵌套一个funin()函数是否可以通过funOut()()()来访问?

可以,相当于 funOut()()() -->> funIn()() -->> funin()

还有一个函数里可以嵌套多个函数吗?若可以应该怎样访问funin()?

可以通过这样访问:

def funOut():
    def funIn():
      print('宾果!你成功访问到我啦!')
    def funin():
      print('宾果2!你成功访问到我啦!')
    return (funIn,funin)

funOut()()
funOut()()

输出结果:
宾果!你成功访问到我啦!
宾果2!你成功访问到我啦!

zltzlt 发表于 2020-8-1 16:09:46

1. return funIn 表示返回 funIn 函数本身
2. 是的
3. 需要这样以元组的形式返回两个函数:

def funOut():
    def funIn():
      print('宾果!你成功访问到我啦!')
    def funin():
      print('宾果2!你成功访问到我啦!')
    return funIn, funin

月魔同学 发表于 2020-8-1 16:26:44

Twilight6 发表于 2020-8-1 16:09
返回的就是一个函数,因为 funIn 没有带上括号,如果带上括号了返回的就是 funIn 函数的调用结果
...

求问:
def funOut():
    def funIn():
      print('宾果!你成功访问到我啦!')
    def funin():
      print('宾果2!你成功访问到我啦!')
    return (funIn(),funin())
结果:
funOut()
宾果!你成功访问到我啦!
宾果2!你成功访问到我啦!
(None, None)

为什么结果会多了一行(None, None)
(一选代码格式会乱码,见量下)

Twilight6 发表于 2020-8-1 16:29:19

月魔同学 发表于 2020-8-1 16:26
求问:
def funOut():
    def funIn():



因为 函数如果你没有设置返回值 默认返回一个None

所以就是因为你里面函数并没有设置 return 所以默认返回 None ,而你加上 print 就将 None 打印出来了

月魔同学 发表于 2020-8-1 16:37:50

Twilight6 发表于 2020-8-1 16:29
因为 函数如果你没有设置返回值 默认返回一个None

所以就是因为你里面函数并没有设置 return 所 ...

是funIn和funin没有返回值吗?如果是那下面的funIn同样没有返回值,为什么就不打印None呢?
def funOut():
    def funIn():
      print('宾果!你成功访问到我啦!')
    return funIn()
结果:
funOut()
宾果!你成功访问到我啦!

Twilight6 发表于 2020-8-1 16:41:24


运行下下面代码,你就知道了:

def funOut():
    def funIn():
      print('宾果!你成功访问到我啦!')
    return funIn
funOut()()
print('----------'*5)
print(funOut())
print('----------'*5)
print(funOut()())

还有这个:
def func():
    return 10000

print(func())

def func():
    pass

print(func())
页: [1]
查看完整版本: 20课后作业