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. redhat6.2 系统中文环境改成英文环境

    暂时变为英文:export LANG=en_US.UTF-8 可以保证你暂时安装oracle没有问题,不出现框框.但是,要说彻底改为英语环境下的时候,用下面: export LANG=en_US就是改 ...

  2. Oracle开发者守则

    下面为Oracle大师级语录: Oracle Database developers should follow is to do everything they can in SQL. What t ...

  3. IronPython使用

    C#: class Program { static void Main(string[] args) { ScriptEngine engine = Python.CreateEngine(); S ...

  4. 《Kubernetes与云原生应用》系列之容器设计模式

    http://www.infoq.com/cn/articles/kubernetes-and-cloud-native-app-container-design-pattern <Kubern ...

  5. 找电影资源最强攻略,知道这些你就牛B了!

    找电影资源最强攻略,知道这些你就牛B了! 电影工厂 2015-07-01 · 分享   点击题目下方环球电影,关注中国顶尖电影微杂志 我们也许没有机会去走遍千山万水,却可以通过电影进入各种各样的角色来 ...

  6. 每日英语:Is Bedtime Snacking Bad?

    It's a familiar scenario in many households: Hours after dinner, the stomach growls and the refriger ...

  7. Observable 示例之 Windows Phone 列表内项目逐个加载

    在写 Windows phone应用性能优化(一)的时候,在 ListBox 的项加载的时候,添加了一些简单的动画. 其实在 Windows Phone 的应用中使用 Blend 设计动画是很容易的, ...

  8. tortoiseGit 如何github提交代码

    由于一直用的都是SVN提交代码,Git也是目前自己边学边用的,本来以为自己已经会用了,可是一段时间没用又忘了 ,所以赶紧整理整理记下来,以便日后使用! 转自:http://blog.csdn.net/ ...

  9. Django Model获取指定列的数据

    model一般都是有多个属性的,但是很多时候我们又只需要查询特定的某一个,这个时候可以用到values和values_list 利用values查询 from attendence.models im ...

  10. Jquery 事件执行两次

    js(jquery)的on绑定点击事件执行两次的解决办法—不是事件绑定而是事件冒泡 阻止冒泡的方法并不止 return false 这一种,还有event.stopPropagation(),这两种方 ...