zoukankan      html  css  js  c++  java
  • python定义函数时的默认返回值

    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'))
    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 函数的返回值也打印了出来

     

  • 相关阅读:
    使用iframe从网页调起移动端应用
    综合练习:词频统计
    组合数据类型练习
    python 绘制五星红旗
    熟悉常用的Linux操作
    大数据概述
    windowBackground打造闪屏页
    安卓日期选择对话框
    c语言语法分析器
    C语言文法
  • 原文地址:https://www.cnblogs.com/chongzi1990/p/8609570.html
Copyright © 2011-2022 走看看