python定义函数时,一般都会有指定返回值,如果没有显式指定返回值,那么python就会默认返回值为None, 即隐式返回语句: return None

执行如下代码

def now():
print('2018-03-20')

直接执行函数的话,结果为:

但是如果打印函数的话

print(now())

打印结果为:

相当于执行了

def now():
print('2018-03-20')
return None
print(now())

如果不想要有None,那么就要添加返回值

def now():
return '2018-03-20' print(now())

但是如果代码改成:

def now():
return print('2018-03-20')
print(now())
>>> print
<built-in function print>

打印结果还是带有 None,个人猜想如下

编辑于 2018-03-30 12:53

print 函数的打印结果

>>> print()

打印为空

>>> print(print())

None

由上述代码,可以猜测该代码的执行顺序

先执行括弧里的 print() 打印的内容为空,print函数执行完后自带换行,接着再执行括弧外的 print 函数,即打印括弧里的print() 的返回值,由此可知 print 函数的默认返回值为 None

再看如下代码

>>> print(print(''))
123
None

执行顺序如上述所猜测的一样

>>> def now():
... pass
...
>>> print(now())
None

定义的函数 now, 函数体为空,未设置返回值,所以 now() 执行的返回值为 None 被打印出来

>>> def now():
... return print
...
>>> now
<function now at 0x000001BECE4C3840>
>>> now()
<built-in function print>
>>> print(now)
<function now at 0x000001BECE4C3840>

现在 now 函数返回值是 print函数,所以打印 now() 就是返回的 print 函数

>>> def now():
... return print('你好')
...
>>> print(now())
你好
None

分析上述代码

先执行括弧里 now(),执行now函数的语句块,now 函数只有一个返回值 print('你好'),所以先打印出字符串 '你好',由于 print函数的默认返回值是 None,最外层的 print 函数就把里层的 print 函数的返回值也打印了出来

python定义函数时的默认返回值的更多相关文章

  1. python定义函数时默认参数注意事项

    如果在调用一个函数时,没有传递默认参数,则函数内的默认参数是对函数的默认参数属性__defaults__的引用, 如 def func(arg1=[]): arg1.append(2) 调用func时 ...

  2. python中函数的参数和返回值

    目录 函数 目标 01. 函数参数和返回值的作用 1.1 无参数,无返回值 1.2 无参数,有返回值 1.3 有参数,无返回值 1.4 有参数,有返回值 02. 函数的返回值 进阶 示例 -- 温度和 ...

  3. day11 python学习 函数的建立,返回值,参数

    函数的定义主要有如下要点: def:表示函数的关键字 函数名:函数的名称,日后根据函数名调用函数 函数体:函数中进行一系列的逻辑计算,如:发送邮件.计算出 [11,22,38,888,2]中的最大数等 ...

  4. python定义函数时的参数&调用函数时的传参

    一.定义函数: 1.位置参数:直接定义参数 2.默认参数(或者关键字参数):参数名 = "默认值" 3.位置参数必须在默认参数之前 二.调用函数: 1.按位置传,直接写参数的值 2 ...

  5. python定义函数时,形参前加*和**的意义

    转发:https://blog.csdn.net/qq_34806812/article/details/82017839 1.加*表示接受一个tuple类型(元组),如: 2.加**表示接受一个di ...

  6. Python 函数为什么会默认返回 None?

    Python 有一项默认的做法,很多编程语言都没有--它的所有函数都会有一个返回值,不管你有没有写 return 语句. 本文出自"Python为什么"系列,在正式开始之前,我们就 ...

  7. python 复习 4-1 函数、参数、返回值、递归

    函数 完成特定功能的一个语句组,这个语句组可以作为一个单位使用,并且给它组语句取一个名子,即函数名 可以通过函数名在程序不同地方多次执行,即函数调用 预定义函数(可以直接使用) 自定义函数(自编写的) ...

  8. python函数传参和返回值注意事项

    函数传参 空参数 定义函数时括号里面没有形参,调用时不用传参. def func(): print('null para.') # 调用 func() 位置传参 规定形参的数量,调用时必须传递相同数量 ...

  9. Python——变量的引用和函数的参数和返回值的传递方式

    变量的引用 在python中,所有的变量都是指向地址,变量本身不保存数据,而是保存数据在内存中的地址.我们用下面的程序来理解: a = 10 print(id(a)) a = 11 print(id( ...

随机推荐

  1. java反射--获取成员变量信息

    获取成员变量信息 代码及说明: public static void printFieldMessage(Object obj) { //要获取类的信息,首先要获取类的类类型 Class c=obj. ...

  2. Oracle 正则 整词匹配 \b 不行

    在oracle中用整词匹配\b来包裹想要匹配的词并不可行, 正确的做法应该是这样: FROM DUAL WHERE REGEXP_LIKE('1 2 3 14','(^|\s|\W)3($|\s|\W ...

  3. Python-类属性与对象属性之间的关系

    只要对象的属性未被指定赋值过, 不论类的属性怎么改变, 对象的属性都会跟随改变, 若对象属性被赋值过, 则不跟随类的属性而改变

  4. jQuery 操作cookie保存用户浏览信息

    使用jQuery操作cookie之前需要引入jQuery的一个cookie小组件js,代码如下:   /*         jQuery cookie plugins */jQuery.cookie ...

  5. 查看nginx的版本

    查看nginx的版本 -v 显示 nginx 的版本-V 显示 nginx 的版本,编译器版本和配置参数 # /app/nginx/sbin/nginx -v nginx version: nginx ...

  6. some issues that you should be take care of when use the plupload module

    1. the config arguments 'browse_button' should not be a single element like button etc. because in i ...

  7. tp类型自动转换和自动完成

    一.类型自动转换 在模型中对数据库字段自动完成 //模型中数据类型自动转换 添加一个$type数组即可protected $type=array( 'username'=>'serialize' ...

  8. miniui前端绑定枚举值

    <script type="text/javascript"> var ConvertData = { DeliveryWays: function (e, cycle ...

  9. 关闭windows打印服务

    1.关闭打印服务:开始-运行-services.msc或打开控制面板-管理工具-服务,打开服务列表,找到Print Spooler(打印服务),关闭(右击,点“关闭”).2.删除打印缓存:进入c:\\ ...

  10. 利用国内的源安装 Python第三方库

    我们需要安装一些Python的第三方库,但是使用  pip install + 第三方库  的时候,会出现下载速度慢的问题,当然我们也可以使用国内的源安装. 例如: sudo pip install ...