鱼C论坛

 找回密码
 立即注册
查看: 1821|回复: 2

[已解决]请大神解答两个代码的返回结果的3个疑问

[复制链接]
发表于 2023-5-25 12:58:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
def fun1():
        print('fun1()正在被调用…')
        def fun2():
                print('fun2()正在被调用…')
        return fun2()

>>> print(fun1())
fun1()正在被调用…
fun2()正在被调用…
None # 问题1:是不是因为内部函数fun2()未定义return返回值?

-------------------------------------------------------------------------

def fun1():
        print('fun1()正在被调用…')
        def fun2():
                return 'fun2()正在被调用…'
        fun2()

>>> print(fun1())
fun1()正在被调用…
None # 问题2:是不是因为外部函数fun1()未定义return返回值?
            问题3:为何返回结果中没有fun2()正在被调用…?难道上面代码中的return 'fun2()正在被调用…'这条语句没有执行?
最佳答案
2023-5-25 12:59:30
问题1:是的,这是因为内部函数fun2()没有定义return返回值,所以返回None。在Python中,如果函数没有指定返回值,则默认返回None。

问题2:是的,这是因为外部函数fun1()没有定义return返回值,所以返回None。

问题3:是的,这是因为在第二个代码示例中,fun2()函数虽然有返回值,但是没有被接收或者输出。如果要输出fun2()正在被调用…,需要将fun2()函数的返回值赋值给一个变量,然后输出该变量的值。修改后的代码如下:
def fun1():     print('fun1()正在被调用…')    def fun2():        return 'fun2()正在被调用…'    result = fun2()    print(result)>>> fun1()fun1()正在被调用…fun2()正在被调用…
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-25 12:59:30 | 显示全部楼层    本楼为最佳答案   
问题1:是的,这是因为内部函数fun2()没有定义return返回值,所以返回None。在Python中,如果函数没有指定返回值,则默认返回None。

问题2:是的,这是因为外部函数fun1()没有定义return返回值,所以返回None。

问题3:是的,这是因为在第二个代码示例中,fun2()函数虽然有返回值,但是没有被接收或者输出。如果要输出fun2()正在被调用…,需要将fun2()函数的返回值赋值给一个变量,然后输出该变量的值。修改后的代码如下:
def fun1():     print('fun1()正在被调用…')    def fun2():        return 'fun2()正在被调用…'    result = fun2()    print(result)>>> fun1()fun1()正在被调用…fun2()正在被调用…
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-25 13:11:35 | 显示全部楼层
本帖最后由 lzb1001 于 2023-5-25 13:14 编辑
isdkz 发表于 2023-5-25 12:59
问题1:是的,这是因为内部函数fun2()没有定义return返回值,所以返回None。在Python中,如果函数没有指定 ...


上面的代码修改后输出的结果中还是有None哦,请看:

def fun1():
        print('fun1()正在被调用…')
        def fun2():
                return 'fun2()正在被调用…'
        result = fun2()
        print(result)

>>> print(fun1())
fun1()正在被调用…
fun2()正在被调用…
None


应该改成下面这样,输出的结果中就没有None了呢:

def fun1():
        print('fun1()正在被调用…')
        def fun2():
                return 'fun2()正在被调用…'
        result = fun2()
        return result

>>> print(fun1())
fun1()正在被调用…
fun2()正在被调用…
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-27 12:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表