设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 11562|回复: 7
打印 上一主题 下一主题

请问,为什么print会返回一个none

[复制链接]

2

主题

0

好友

22

积分

新手上路

Rank: 1

跳转到指定楼层
楼主
发表于 2019-1-10 09:23:55 |只看该作者 |倒序浏览
本帖最后由 欲之 于 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) 什么都不输出呢?
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2019-1-10 10:29:34 |只看该作者
sayHello这个函数没有return,默认返回值是None。不要把print和return搞混了。print是往控制台输出内容,和返回值无关
第二个问题也是一样的道理,你没把 return(函数返回值) 和 print(向控制台输出) 两个概念分清。
sayHello的函数里有print语句,只要被调用就会向控制台输出,但没有返回值,所以返回None
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

2

主题

0

好友

22

积分

新手上路

Rank: 1

板凳
发表于 2019-1-10 11:25:14 |只看该作者
crossin先生 发表于 2019-1-10 10:29
sayHello这个函数没有return,默认返回值是None。不要把print和return搞混了。print是往控制台输出内容,和 ...

明白了!还有那个为什么type(sayHello)什么都不输出呢?
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

地板
发表于 2019-1-11 12:29:52 |只看该作者
欲之 发表于 2019-1-10 11:25
明白了!还有那个为什么type(sayHello)什么都不输出呢?

函数名后面没加括号就没有调用函数
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

2

主题

0

好友

22

积分

新手上路

Rank: 1

5#
发表于 2019-1-11 15:12: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 不是吗?
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

6#
发表于 2019-1-11 23:40:52 |只看该作者
欲之 发表于 2019-1-11 15:12
输出:
lin hello world
lin hello world

是一样的。但你并没有输出 type的结果啊
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

6

主题

2

好友

654

积分

实习版主

Rank: 7Rank: 7Rank: 7

7#
发表于 2019-1-13 08:21:03 |只看该作者
本帖最后由 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
复制代码
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

8#
发表于 2019-1-14 21:29:12 |只看该作者
TED 发表于 2019-1-13 08:21
老大,刚试了下,对这个isinstance(None,NoneType) 这个还有点疑问,None属于NoneType了,为什么还会报错? ...

没有NoneType这个关键字,这个只是 None的类型转成字符后的结果
你要判断一个值是不是None直接 is None 就可以了
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-4-20 02:56 , Processed in 0.020122 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部