支离疏哈哈哈 发表于 2020-5-2 12:31:43

我也不知道这是什么,nonetype吗

def a():
   def b():
      print('nmsl')
   return b

第一个问题,这时输入a()
出来<function a.<locals>.b at 0x03575028>,可是这个类型却是函数。

第二个问题,输入a()(),可以出来 ‘nmsl’,明明是字符串,类型为啥是nonetype

liuzhengyuan 发表于 2020-5-2 12:38:33

本帖最后由 liuzhengyuan 于 2020-5-2 13:23 编辑

①这是因为你 return b 调用是没加括号
②nonetype 是因为你是用了一个 print() 函数输出,不是用 return 返回的

由此可见↓,print没有返回值(None)
>>> print(print())

None

qiuyouzhi 发表于 2020-5-2 12:43:23

print函数没有返回值,你可以把print括号里的东西拿出来return掉。

支离疏哈哈哈 发表于 2020-5-2 13:20:50

liuzhengyuan 发表于 2020-5-2 12:38
这是因为你 return b 调用是没加括号
nonetype 是因为你是用了一个 print() 函数输出,不是用 return 返回 ...

nonetype是针对返回值而言的是吗

liuzhengyuan 发表于 2020-5-2 13:21:44

支离疏哈哈哈 发表于 2020-5-2 13:20
nonetype是针对返回值而言的是吗

这里是的

zltzlt 发表于 2020-5-2 13:37:58

1. a() 返回的是内部的 b 函数。

2. a()() 不仅执行 b,还打印 b 的返回值。由于 b 没有返回值,所以 b 的返回值为 None,打印出了 None 。

支离疏哈哈哈 发表于 2020-5-2 13:58:41

zltzlt 发表于 2020-5-2 13:37
1. a() 返回的是内部的 b 函数。

2. a()() 不仅执行 b,还打印 b 的返回值。由于 b 没有返回值,所以 b...

print('nmsl')为啥叫做打印b的返回值?,这不是只是执行一个打印字符串的操作吗,返回值不是 return后面的才叫返回值吗

zltzlt 发表于 2020-5-2 13:59:25

支离疏哈哈哈 发表于 2020-5-2 13:58
print('nmsl')为啥叫做打印b的返回值?,这不是只是执行一个打印字符串的操作吗,返回值不是 return后面 ...

print('nmsl') 是属于执行 b,由于 b 并没有返回值,所以返回 None 。

支离疏哈哈哈 发表于 2020-5-2 14:10:01

zltzlt 发表于 2020-5-2 13:59
print('nmsl') 是属于执行 b,由于 b 并没有返回值,所以返回 None 。

哦哦了解了谢谢

永恒的蓝色梦想 发表于 2020-5-2 14:59:12

<function a.<locals>.b at 0x03575028>
难道它的类型不应该是
页: [1]
查看完整版本: 我也不知道这是什么,nonetype吗