Crossin的编程教室

标题: 请问,为什么print会返回一个none [打印本页]

作者: 欲之    时间: 2019-1-10 09:23
标题: 请问,为什么print会返回一个none
本帖最后由 欲之 于 2019-1-10 09:33 编辑
  1. def sayHello(someone):
  2.     print(someone+' hello world')
  3. isinstance(sayHello('lin'),str)
  4. print(sayHello('lin'))
复制代码
控制台:
lin hello world
lin hello world
None

两个问题:
一是 为什么print 会返回一个none,sayHello('lin')得出的不是一个字符串了吗?
二是 为什么用检测sayHello('lin') 会直接输出字符串呢,不应该是true或false吗?或者我type(sayHello) 什么都不输出呢?

作者: crossin先生    时间: 2019-1-10 10:29
sayHello这个函数没有return,默认返回值是None。不要把print和return搞混了。print是往控制台输出内容,和返回值无关
第二个问题也是一样的道理,你没把 return(函数返回值) 和 print(向控制台输出) 两个概念分清。
sayHello的函数里有print语句,只要被调用就会向控制台输出,但没有返回值,所以返回None
作者: 欲之    时间: 2019-1-10 11:25
crossin先生 发表于 2019-1-10 10:29
sayHello这个函数没有return,默认返回值是None。不要把print和return搞混了。print是往控制台输出内容,和 ...

明白了!还有那个为什么type(sayHello)什么都不输出呢?
作者: crossin先生    时间: 2019-1-11 12:29
欲之 发表于 2019-1-10 11:25
明白了!还有那个为什么type(sayHello)什么都不输出呢?

函数名后面没加括号就没有调用函数
作者: 欲之    时间: 2019-1-11 15:12
crossin先生 发表于 2019-1-11 12:29
函数名后面没加括号就没有调用函数
  1. def sayHello(someone):
  2.     print(someone+' hello world')
  3.     return 123
  4. type(sayHello('lin'))
  5. print(sayHello('lin'))
复制代码
输出:
lin hello world
lin hello world
123

您看,上次您回答我的那个问题之后,我给函数加了个返回值,然后type(sayHello('lin'))跟type(123)是不一样的吗?那应该输出int 不是吗?
作者: crossin先生    时间: 2019-1-11 23:40
欲之 发表于 2019-1-11 15:12
输出:
lin hello world
lin hello world

是一样的。但你并没有输出 type的结果啊
作者: TED    时间: 2019-1-13 08:21
本帖最后由 TED 于 2019-1-13 08:28 编辑
crossin先生 发表于 2019-1-11 12:29
函数名后面没加括号就没有调用函数

老大,刚试了下,对这个isinstance(None,NoneType) 这个还有点疑问,None属于NoneType了,为什么还会报错?
  1. print(type(1))
  2. print(isinstance(1,int))

  3. print(isinstance(None,type(None)))
  4. print(type(None))
  5. print(isinstance(None,NoneType))
复制代码
输出
  1. <class 'int'>
  2. True
  3. True
  4. <class 'NoneType'>
  5. Traceback (most recent call last):
  6.   File "D:/PythonProjects/paisang/test", line 6, in <module>
  7.     print(isinstance(None,NoneType))
  8. NameError: name 'NoneType' is not defined
复制代码

作者: crossin先生    时间: 2019-1-14 21:29
TED 发表于 2019-1-13 08:21
老大,刚试了下,对这个isinstance(None,NoneType) 这个还有点疑问,None属于NoneType了,为什么还会报错? ...

没有NoneType这个关键字,这个只是 None的类型转成字符后的结果
你要判断一个值是不是None直接 is None 就可以了




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5