QWERRRRR 发表于 2019-12-1 10:10:45

新手不懂,求帮助

def func1():
    a = "python小黑屋"
    def func2():
      nonlocal a
      a = a * 3
      print(a)
      
    return func2()
print(func1())
为啥这个输出是"python小黑屋"和 None,为什么没有返回值啊?

QWERRRRR 发表于 2019-12-1 10:31:09

来人

jackz007 发表于 2019-12-1 11:25:02

      因为 fun1() 返回的是对 fun2() 的调用结果,而 fun2() 没有 return 任何东西,所以,fun2() 返回的是 None,那么,fun1() 返回的就是 None。print(fun1()) 打印输出如下内容就不足为奇了。
python小黑屋python小黑屋python小黑屋
None

HTIAN 发表于 2019-12-1 11:37:51

本帖最后由 HTIAN 于 2019-12-1 13:11 编辑


def func1():
    a = "python小黑屋"
    def func2():
      nonlocal a
      a = a * 3
      print(a)
      
    return func2()
print(func1())
把"python小黑屋"赋值给了a
又定义一个非局部变量a( nonlocal a)
那么func2中的a和func1中的a是一个变量;
a=a*3
所以会输出“python小黑屋python小黑屋python小黑屋”
又是 return func2()
本来func2就在func1中,又在func2的下面调用func2
func2中是print(a)不是return(a)所以输出none


QWERRRRR 发表于 2019-12-1 14:00:48

谢谢

QWERRRRR 发表于 2019-12-1 14:01:21

HTIAN 发表于 2019-12-1 11:37
def func1():
    a = "python小黑屋"
    def func2():


谢谢
页: [1]
查看完整版本: 新手不懂,求帮助